我喜欢在数组上执行搜索,并在找到匹配项时返回所有值。数组中的键[name]
就是我正在搜索的内容。
Array (
[0] => Array
(
[id] => 20120100
[link] => www.janedoe.com
[name] => Jane Doe
)
[1] => Array
(
[id] => 20120101
[link] => www.johndoe.com
[name] => John Doe
)
)
如果我搜索 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
)
)
答案 0 :(得分:13)
$filteredArray =
array_filter($array, function($element) use($searchFor){
return isset($element['name']) && $element['name'] == $searchFor;
});
需要PHP 5.3.x
答案 1 :(得分:1)
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
}
答案 2 :(得分:1)
我想对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');
答案 3 :(得分:0)
byte