如何根据特定键值选择值

时间:2016-04-18 22:30:14

标签: php arrays

这是数组:

Array
(
[0] ( Array
    (
        [id] => 1
        [name] => Bag
        [flag] => 0
    )

[1] => Array
    (
        [id] => 2
        [name] => Screen
        [flag] => 0
    )

[2] => Array
    (
        [id] => 3
        [name] => HD
        [flag] => 0
    )

)

我需要得到的是此数组中“flag”(3rd)列的值,基于此数组中“id”(第1)列的值。

另一个例子,ID#2的名称是“Screen”。但是,使用$items[2]['name']时显然会返回HD。关于去哪里的任何想法?

用于生成上述输出的当前代码是:

$items = array();
while ($row = mysqli_fetch_array($flagresult)) {
$items[] = array($row['id'], 'name' => $row['name'], 'flag' => $row['flag']);
}

由于

3 个答案:

答案 0 :(得分:5)

使用array_column(),您可以按id索引数组:

$items = array_column($items, null, 'id');
echo $items[2]['name'];
echo $items[2]['flag'];

但是为什么不在创建数组时这样做呢?首先,只选择您需要的字段SELECT id, name, flag FROM ...然后只需使用mysqli_fetch_assoc()获取关联数组,并使用id作为关键字:

while ($row = mysqli_fetch_assoc($flagresult)) {
    $items[$row['id']] = $row;
}

答案 1 :(得分:1)

您可以使用array_search 在数组中搜索给定值,并在成功时返回相应的键

$key = array_search(2, array_column($items, 'id'),true);
echo $items[$key]['name'];

答案 2 :(得分:1)

使用数组的id作为数组的索引:

$items = array();
while ($row = mysqli_fetch_array($flagresult)) {
    $items[$row['id']] = array('name' => $row['name'], 'flag' => $row['flag']);
}