$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 关注
- 2524 浏览
添加回答
举报
0/150
提交
取消
