这是数组:
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']);
}
由于
答案 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']);
}