PHP:在数组中查找具有特定属性值的元素

时间:2010-06-15 18:27:38

标签: php arrays search

我确信有一种简单的方法可以做到这一点,但我现在想不到它。是否有数组函数或某些东西让我搜索数组并找到具有特定属性值的项目?例如:

$people = array(
  array(
    'name' => 'Alice',
    'age' => 25,
  ),
  array(
    'name' => 'Waldo',
    'age' => 89,
  ),
  array(
    'name' => 'Bob',
    'age' => 27,
  ),
);

我怎样才能找到并获得Waldo?

3 个答案:

答案 0 :(得分:1)

使用以下代码段,您可以大致了解如何执行此操作:

foreach ($people as $i => $person)
{
    if (array_key_exists('name', $person) && $person['name'] == 'Waldo')
        echo('Waldo found at ' . $i);
}

然后,您可以将上一个片段作为一般用途函数,如:

function SearchArray($array, $searchIndex, $searchValue)
{
    if (!is_array($array) || $searchIndex == '')
        return false;

    foreach ($array as $k => $v)
    {
        if (is_array($v) && array_key_exists($searchIndex, $v) && $v[$searchIndex] == $searchValue)
            return $k;
    }

    return false;
}

并像这样使用它:

$foundIndex = SearchArray($people, 'name', 'Waldo'); //Search by name
$foundIndex = SearchArray($people, 'age', 89); //Search by age

但要小心,因为函数可以返回0和false,它们都计算为false(使用类似 if($ foundIndex!== false) if($ foundIndex ===假))。

答案 1 :(得分:0)

function findByName($array, $name) {
    foreach ($array as $person) {
        if ($person['name'] == $name) {
            return $person;
        }
    }
}

答案 2 :(得分:0)

function getCustomSearch($key) {
   foreach($people as $p) {
      if($p['name']==$searchKey) return $p
   }
}

getCustomSearch('waldo');