【问题标题】:php two layer array key search [duplicate]php两层数组键搜索[重复]
【发布时间】:2013-03-08 10:06:35
【问题描述】:
$arr = array (

    0 => array(
        'id' => 1,
        'name' => 'john'
    ),
    1 => array(
        'id' => 4,
        'name' => 'elisabeth'
    )
);

假设我们只知道内部数组的“id”,那么搜索包含我们的 id 的数组的 $arr 元素的最佳方法是什么?

【问题讨论】:

    标签: php arrays search key


    【解决方案1】:
    function search($id)
    {
        foreach ($arr as $item) {
            if (isset($item['id']) && $item['id'] == $id) {
                return $item; // or whatever you want to return
            }
        }
    }
    

    更新:

    function search($id)
    {
        foreach ($arr as $key => $item) {
            if (isset($item['id']) && $item['id'] == $id) {
                return $key; // Return key...
            }
        }
    }
    

    【讨论】:

    • 如果没有找到return false;
    • 是的,但我需要那个元素的键,例如 id=4 返回 1,id=1 返回 0
    • 我是php新手,怕“做错”
    • 添加更新代码以返回密钥
    【解决方案2】:
    $arr = array (
    
    0 => array(
        'id' => 1,
        'name' => 'john'
    ),
    1 => array(
        'id' => 4,
        'name' => 'elisabeth'
    )
    );
    foreach($arr as $a)
    if($a["id"] == 4)
    echo $a["name"];
    

    【讨论】:

      【解决方案3】:

      使用数组过滤器

      $arr = array (
      
          0 => array(
              'id' => 1,
              'name' => 'john'
          ),
          1 => array(
              'id' => 4,
              'name' => 'elisabeth'
          )
      );
      
      $id = 1;
      $result = array_filter($arr, function($el) use ($id) {
          return $el['id'] == $id;
      });
      echo '<pre>', var_dump($result), '</pre>';
      

      【讨论】:

        【解决方案4】:
        $array = array(
            0 => array(
                'id' => 1,
                'name' => 'john'
            ),
            1 => array(
                'id' => 4,
                'name' => 'elisabeth'
            )
        );
        
        $search = 4;
        $result = null;
        
        array_walk(
            $array,
            function ($element) use ($search, &$result) {
                if (isset($element['id']) && (int)$element['id'] === (int)$search) {
                    $result = $element;
                }
            }
        );
        
        var_dump($result);
        

        【讨论】:

          猜你喜欢
          • 2019-05-08
          • 1970-01-01
          • 1970-01-01
          • 2014-03-23
          • 1970-01-01
          • 2013-09-08
          • 2013-09-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多