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

OK、ちょっとした変更はどうですか?

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 に答える
0

これを試してください:多次元配列を介したPHPforeachループ

于 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 に答える