Найдите массив и верните все ключи и значения, если найдено совпадение

Мне нравится выполнять поиск по массиву и возвращать все значения, когда найдено совпадение. Ключевое [name] в массиве – это то, что я делаю в поиске.

 Array ( [0] => Array ( [id] => 20120100 [link] => www.janedoe.com [name] => Jane Doe ) [1] => Array ( [id] => 20120101 [link] => www.johndoe.com [name] => John Doe ) ) 

Если бы я сделал поиск Джона Доу, он вернется.

 Array ( [id] => 20120101 [link] => www.johndoe.com [name] => John Doe ) 

Было бы проще переименовать массивы на основе того, что я ищу. Вместо указанного массива я также могу создать следующее.

 Array ( [Jane Doe] => Array ( [id] => 20120100 [link] => www.janedoe.com [name] => Jane Doe ) [John Doe] => Array ( [id] => 20120101 [link] => www.johndoe.com [name] => John Doe ) ) 

 $filteredArray = array_filter($array, function($element) use($searchFor){ return isset($element['name']) && $element['name'] == $searchFor; }); 

Требуется PHP 5.3.x

 function search_array( $array, $name ){ foreach( $array as $item ){ if ( is_array( $item ) && isset( $item['name'] )){ if ( $item['name'] == $name ){ // or other string comparison return $item; } } } return FALSE; // or whatever else you'd like } 

Я хотел бы предложить необязательное изменение ответа scibuff (что было отлично). Если вы не ищете точное совпадение, а строку внутри массива …

 function array_search_x( $array, $name ){ foreach( $array as $item ){ if ( is_array( $item ) && isset( $item['name'] )){ if (strpos($item['name'], $name) !== false) { // changed this line return $item; } } } return FALSE; // or whatever else you'd like } 

Назовите это …

 $pc_ct = array_search_x($your_array_name, 'your_string_here');