【问题标题】:Search in Array of Arrays在数组数组中搜索
【发布时间】:2014-04-24 15:58:05
【问题描述】:

我有这样的数组:

Array
(
    [license_id] => 2
    [email_address] => alib@email.com
    [user_id] => 2
    [first_watch] => 
)
Array
(
    [license_id] => 1
    [email_address] => user1@email.com
    [user_id] => 
    [first_watch] => 
)

这些数组会被嵌入到一个数组中,所以结果是一个数组数组。 我需要在这些项目中搜索特定的 user_id。 因此,例如,我想知道大数组是否包含一个具有 user_id = 2 的数组并返回该数组的键。

Array
(
    [0] => Array
        (
            [license_id] => 2
            [email_address] => alib@email.com
            [user_id] => 2
            [first_watch] => 
        )

    [1] => Array
        (
            [license_id] => 1
            [email_address] => user1@email.com
            [user_id] => 
            [first_watch] => 
        )
)

如果我正在寻找 2 (user_id),我希望从这个示例中获得密钥 [0]。我会一直在寻找一个 user_id,所以这是固定的。 我用foreach循环遍历item,用in_array()查找item,但是结果并不总是如我所愿,有时候搜索不存在的东西还是会返回key。

你们对实现这一目标有什么建议吗?

【问题讨论】:

  • 您能展示一下您使用的 foreach 循环吗?

标签: php arrays search


【解决方案1】:

PHP >= 5.5.0

提取user_id 列并搜索:

$key = array_search(2, array_column($array, 'user_id'));

PHP

映射并获取user_id:

$key = array_search(2, array_map(function($v) { return $v['user_id']; }, $array));

或者循环检查:

foreach($array as $k => $v) {
    if($v['user_id'] == 2) {
        $key = $k;
        break;
    }
}

【讨论】:

    【解决方案2】:

    我会这样做:

    //my_array being your multidimensional array
    //my_id being the id you're looking for
    $index = null;
    for($i=0;$i<count($my_array);$i++)
    {
       //is the id in this sub array?
       if($my_array[$i]['user_id'] == $my_id)
       {
          //get the index you're searching for
          $index = $i;
       }
    }
    //check if an index was found
    if($index != null)
    {
       //display the index you're searching for
       echo $index;
    }
    

    它有点长,但它允许您在需要时向代码中添加内容。

    【讨论】:

    • 也许将 license-id 更改为用户 ID?这就是OP想要的。除此之外,你做得很好!!我喜欢循环播放。
    猜你喜欢
    • 2017-03-26
    • 2014-04-26
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2011-09-12
    相关资源
    最近更新 更多