搜索数组并在找到匹配项时返回所有键和值

2022-08-30 23:17:28

我喜欢对数组执行搜索,并在找到匹配项时返回所有值。数组中的关键是我正在执行搜索的内容。[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
    )
)

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

需要 PHP 5.3.x


答案 2

我想对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');