? $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 關注
- 2452 瀏覽
添加回答
舉報
0/150
提交
取消