PHP循环多维数组

时间:2012-05-04 11:44:40

标签: php arrays loops multidimensional-array

不完全确定如何充分标题这个问题,但它需要循环嵌套在数组中的任何数组,其中也可能是任何其他数组的元素 - 依此类推。最初,我认为需要一个标记哪些数组尚未循环以及哪些数组完全循环“基数”数组(尽管据悉这不需要,并且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;
      }
    }
   }
 }

4 个答案:

答案 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;
}

嗯?