为了账号安全,请及时绑定邮箱和手机立即绑定

php for 循环 用key对比参数 去对应的values

php for 循环 用key对比参数 去对应的values

PHP
_小_七_ 2016-08-06 15:11:44
  $data = 'L-15';    $arr =array(                          'L-12'=>'1265-50-7 20160720 7_IESNA95.IES',       'L-15'=>'1565-50-7 20160720 7_IESNA95.IES'     );       for($i = 0, $n = count($arr);$i < $n; $i++){        if($data == key($arr)){            $filepath = current($arr);        }    }    die(var_dump($filepath));我想取对应的值赋值给 $filwpath  出错   打印说没定义$filepath ;
查看完整描述

4 回答

已采纳
?
snowmanJS

TA贡献89条经验 获得超53个赞

/*
  解决方法一:1.首先$filepath在for中的if中,所以其作用域只能在if语句中,在其他位置都不能调用它,因此系统提示undefined。应该把$filepath放在for的上面定义;2.你的for语句中应该要加上 next($arr)。因为,调用 key()和current()这两个函数的时候,指针不会自动移动,调用next()可使指针向下一个移动。
*/
<?php
$data = 'L-15';
$filepath="";
$arr =array('L-12'=>'1265-50-7 20160720 7_IESNA95.IES',
    'L-15'=>'1565-50-7 20160720 7_IESNA95.IES');
for($i = 0, $n = count($arr);$i < $n; $i++){
    if($data == key($arr)){
        $filepath = current($arr);
        break;
    }
    next($arr);
}
var_dump($filepath);
?>
/*
  解决方法二:使用foreach循环,可以更简洁的解决问题。
*/
<?php
$data = 'L-15';
$filepath="";
$arr =array('L-12'=>'1265-50-7 20160720 7_IESNA95.IES',
    'L-15'=>'1565-50-7 20160720 7_IESNA95.IES');
foreach($arr as $key=>$value){
    if($data == $key){
        $filepath = $value;
        break;
    }
}
var_dump($filepath);
?>


查看完整回答
1 反对 回复 2016-08-07
?
罗夜夜

TA贡献9条经验 获得超2个赞

 $data = 'L-15';
    $arr =array(            
       'L-12'=>'1265-50-7 20160720 7_IESNA95.IES',
       'L-15'=>'1565-50-7 20160720 7_IESNA95.IES' 
    );
    for($i = 0, $n = count($arr);$i < 2; $i++){
         // var_dump (key($arr));
        next($arr); //主要是这个
        if($data == key($arr)){
            // var_dump (key($arr));
            $filepath = current($arr);
        }
    }
    die(var_dump($filepath));

这样可以了,试一下

查看完整回答
反对 回复 2016-08-06
  • _小_七_
    _小_七_
    如果有多个键值对呢?arr里面有一百个键值对呢 你这样一开始就知道要匹配的是第二个了 用next()函数当然没问题,用next()的话,for循环的意义已经没有了 你for循环都不会自己循环了要next来偏移
?
Caballarii

TA贡献1123条经验 获得超629个赞

$filepath='';
for($i = 0, $n = count($arr);$i < $n; $i++){
        if($data == key($arr)){
            $filepath = current($arr);
        }
    }
die(var_dump($filepath));

大概是这样吧,循环里定义的变量只能在循环当中使用,出了循环就是未定义了,所以要先在循环外面定义一遍

查看完整回答
反对 回复 2016-08-06
  • 4 回答
  • 0 关注
  • 2370 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信