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

  $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 ;

_小_七_
浏览 2371回答 4
4回答

snowmanJS

/*   解决方法一: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); ?>

罗夜夜

 $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));这样可以了,试一下

Caballarii

$filepath=''; for($i = 0, $n = count($arr);$i < $n; $i++){         if($data == key($arr)){             $filepath = current($arr);         }     } die(var_dump($filepath));大概是这样吧,循环里定义的变量只能在循环当中使用,出了循环就是未定义了,所以要先在循环外面定义一遍
打开App,查看更多内容
随时随地看视频慕课网APP