Я никогда раньше не использовал массивы PHP, поскольку я только что использовал базу данных в прошлом, поэтому немного расширяю свои горизонты. В основном у меня есть простой вложенный массив, в котором каждый элемент имеет «имя» и некоторые другие значения. Я пытаюсь выполнить поиск по массиву, который является частью объекта. Я рассмотрел ряд предыдущих вопросов здесь и не могу заставить его работать, хотя в других случаях не было объектов. Я пытаюсь использовать пример типа «игла / сена», но пока не получил его.
Итак, в моем классе «Люди» мы имеем между прочим:
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');
Я не уверен, что я просто путаю себя с тем, что $ игла и значение $ – мне нужно передать значение имени в функции поиска, поэтому у меня было значение $ в аргументах функции, но это все еще ничего не дало. Кроме того, я не на 100% зависит от того, нужно ли «$ key => $ value» изменять, поскольку ключ $ undefined.
Заранее благодарю за любую помощь.
Дополнение – 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 ) )
Хорошо, это было бы намного проще, если бы вам пришлось опубликовать массив примеров, но я собираюсь рассказать об этом вопросе.
Для меня кажется, что вы перебираете 2D-массив (вложенный массив).
Я бы циклически перебирал многомерные массивы:
for($array as $key => $2ndArray){ for($2ndArray as $2ndKey => $value){ if($value == $needle){ return true; } } }
Надеюсь это поможет