在关联数组中查找值

时间:2015-07-06 18:27:16

标签: php arrays

我有一个嵌套数组,我想知道如何在其中查找元素。

这是数组:

$test = [
    ['item_id' => 780, 'quantity' => 1],
    ['item_id' => 759, 'quantity' => 3],
    ['item_id' => 453, 'quantity' => 12]
];

我确实设法使用foreaech循环,但想知道是否有更好的方法?

foreach($test as $t) {
    if($t['item_id']==780) echo $t['quantity'];
}

3 个答案:

答案 0 :(得分:0)

如果数组已经排序,你可以在O(log n)时间内完成,但如果没有,你必须搜索所有元素,直到找到它为止,这是O(n)时间。如果数组没有排序,我认为迭代它们是唯一的方法。如果存在对数组进行预排序的选项,则可能会更快。

编辑:如果可以更改数据结构,那么这将为更快的算法开辟很多可能性,但我认为这不是这种情况。

答案 1 :(得分:0)

递归使用in_array:

function in_array_r($needle, $haystack, $strict = false) {
    foreach ($haystack as $item) {
        if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
            return true;
        }
    }
    return false;
}

$arr = array(array('item_id'=>2132,'quantity'=>1),array('item_id'=>759,'quantity'=>3),array('item_id'=>453,'quantity'=>12));
echo in_array_r("2132", $arr) ? 'found' : 'not found';

答案 2 :(得分:0)

所以基本上你正在寻找嵌套数组中的关键功能搜索。

Here是一个很好的答案:)