2

不完全确定如何适当地命名这个问题,但它需要遍历嵌套在数组中的任何数组,其中也可能是任何其他数组的元素 - 等等。最初,我认为需要标记哪些数组尚未循环,哪些数组已经循环,以完全循环“基本”数组(尽管了解到这不是必需的,而且 PHP 以某种方式任意执行此操作) . 这个问题似乎有点奇怪——如果省略了用于测试该值是否未找到的条件子句,则该函数将在任何地方找到嵌套在数组中的值,反之亦然。无论如何,功能如下:

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

4 回答 4

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;
}
于 2012-05-04T11:54:43.283 回答
0

试试这个:PHP foreach 循环遍历多维数组

于 2012-05-04T11:49:04.693 回答
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;
}
于 2012-05-04T11:51:26.463 回答
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;
}

唔?

于 2012-05-04T11:54:49.710 回答