2

過去にデータベースを使用しただけなので、PHP配列を実際に使用したことは一度もなかったので、視野を少し広げています。基本的に、各要素に「名前」とその他の値を持つ単純なネストされた配列があります。オブジェクトの一部である配列を検索しようとしています。ここで以前のいくつかの質問に目を通しましたが、うまくいきませんでしたが、他のケースではオブジェクトが関与していませんでした。「針/干し草の山」タイプの例を使用しようとしましたが、まだ機能していません。

したがって、私の People クラスには、とりわけ次のものがあります。

public $peopleArray;  // this is the array and will be protected once working

// and this is the example search function im trying to modify
public function findPerson($needle, $haystack)
{
    foreach($haystack as $key=>$value)
    {
        if(is_array($value) && array_search($needle, $value) !== false)
        {
            return $key;
        }
    }
    return 'false';
}

そして、これを呼び出すために、私は現在持っています:

$searchResult = $People->findPerson('Bob',$people->peopleArray,'name');

$needle と $value を混同しているだけなのかどうかはわかりません。検索関数で名前の値を渡す必要があるため、関数の引数に $value を指定しましたが、それでも何も返されませんでした。また、$key が定義されていないため、'$key=>$value' を変更する必要があるかどうかについても 100% ではありません。

助けてくれてありがとう。

追加 - 配列の print_r:

Array ( [0] => Person Object ( [id:protected] => 1 [name] => Bob [gender] => m ) 
[1] => Person Object ( [id:protected] => 2 [name] => Denise [gender] => f ) 
[2] => Person Object ( [id:protected] => 3 [name] => Madge [gender] => f ) ) 
4

1 に答える 1

2

配列の例を投稿する必要がある場合、これははるかに簡単になりますが、この質問に挑戦します。

私には、2D配列(ネストされた配列)をループしているようです。

次のような多次元配列をループします。

for($array as $key => $2ndArray){
    for($2ndArray as $2ndKey => $value){
        if($value == $needle){
           return true;
        }
    }
}

お役に立てれば

于 2012-12-10T11:30:59.033 に答える