代码之家  ›  专栏  ›  技术社区  ›  Svish

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

  •  2
  • Svish  · 技术社区  · 16 年前

    我相信有一个简单的方法可以做到这一点,但我现在想不起来。是否有一个数组函数或其他函数允许我在数组中搜索并找到具有特定属性值的项?例如:

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

    我怎样才能找到沃尔多?

    3 回复  |  直到 16 年前
        1
  •  1
  •   AlexV    16 年前

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

    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(使用类似 如果($foundIndex!==错误) 如果($foundIndex==false) ).

        2
  •  0
  •   alexantd    16 年前
    function findByName($array, $name) {
        foreach ($array as $person) {
            if ($person['name'] == $name) {
                return $person;
            }
        }
    }
    
        3
  •  0
  •   Svish    16 年前
    function getCustomSearch($key) {
       foreach($people as $p) {
          if($p['name']==$searchKey) return $p
       }
    }
    
    getCustomSearch('waldo');
    
    推荐文章