不完全确定如何充分标题这个问题,但它需要循环嵌套在数组中的任何数组,其中也可能是任何其他数组的元素 - 依此类推。最初,我认为需要一个标记哪些数组尚未循环以及哪些数组完全循环“基数”数组(尽管据悉这不需要,并且PHP以某种方式任意执行此操作) 。问题似乎有点特殊 - 如果省略了用于测试是否找不到值的条件claus,函数将在任何地方找到嵌套在数组中的值,反之亦然。无论如何,功能如下:
function loop($arr, $find) {
for($i=0;$i<count($arr);$i++) {
if($arr[$i] == $find) {
print "Found $find";
return true;
} else {
if(is_array($arr[$i])) {
$this->loop($arr[$i], $find);
} else {
print "Couldn't find $find";
return false;
}
}
}
}
答案 0 :(得分:1)
也许您应该将代码更改为:
var $found = false;
function loop($arr, $find) {
foreach($arr as $k=>$v){
if($find==$v){
$this->found = true;
}elseif(is_array($v)){
$this->loop($v, $find);
}
}
return $this->found;
}
答案 1 :(得分:0)
答案 2 :(得分:0)
这对我来说已经有一段时间了。
function array_search_key( $needle_key, $array ) {
foreach($array AS $key=>$value){
if($key == $needle_key) return $value;
if(is_array($value)){
if( ($result = array_search_key($needle_key,$value)) !== false)
return $result;
}
}
return false;
}
答案 3 :(得分:0)
好的,稍微修改一下:
function loop($arr, $find) {
for($i=0;$i<count($arr);$i++) {
if(is_array($arr[$i])) {
$this->loop($arr[$i], $find);
} else {
if($arr[$i] == $find) {
print "Found $find";
return true;
}
}
}
return false;
}
嗯?