$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); ?>
罗夜夜
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));
这样可以了,试一下
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));
大概是这样吧,循环里定义的变量只能在循环当中使用,出了循环就是未定义了,所以要先在循环外面定义一遍
- 4 回答
- 0 关注
- 2370 浏览
添加回答
举报
0/150
提交
取消