Мне нравится выполнять поиск по массиву и возвращать все значения, когда найдено совпадение. Ключевое [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');