请问这段代码写的有什么问题,不就是给$url赋值么,为何有人看到后会骂娘foreach ( $arr as $k => &$v ) {
if ($k == '2' || $k == '3') {
if ($v ['url'] != '') {
$url = $v ['url'];
} else {
$url = "/Home/index/getInfo/id/" . $v ['id'];
}
}
}
if ($k == '2' || $k == '3') {
if ($v ['url'] != '') {
$url = $v ['url'];
} else {
$url = "/Home/index/getInfo/id/" . $v ['id'];
}
}
}
//估计是嵌套太多,有些人不喜欢
foreach ( $arr as $k => &$v ) {
if ($k == '2' || $k == '3') {
$url = $v['url'] != '' ? $v['url'] : '/Home/index/getInfo/id/'.$v['id'];
}
}
$url = (key($arr) == 2 || key($arr) == 3) && $v['url'] ? $v['url'] : "/Home/index/getInfo/id/" . $v ['id'];
所以url只会是你最后一次符合条件的循环的数据。个人感觉应该是加break的,这样才合理
如果按这个需求,可以这样改<?php
foreach($arr as $k = >&$v) {
if ($k == '2' || $k == '3'){
$url = $v['url']!=''? $v['url'] : "/Home/index/getInfo/id/".$v['id'];
break;
}
}
?>