我正在查询关联数组的值,我需要更改它看起来的方式,并添加值'0',其中未返回值(基于$ result的计数)
即。 <=count($result)
有4个房间,但只有1个房间和1个房间。返回3,但我仍然需要r_id
值2&amp; 4的r_rate
值为0.
目前我的数组如下所示:
Array
(
[0] => Array
(
[r_id] => 1
[r_rate] => 180.00
)
[1] => Array
(
[r_id] => 3
[r_rate] => 100.00
)
)
我希望数组看起来像这样但我无法定义要合并的数组,因为r_id
值会有所不同:
Array
(
[1] => 180.00 // [r_id] => [r_rate]
[2] => 0
[3] => 100.00
[4] => 0
)
我需要将r_id
的值作为关键字,r_rate
的值作为值,并添加缺少的r_id
值(2&amp; 4)值为0.
SQL:
$sql = $dbh->prepare("SELECT booking_room.r_id, room.r_rate FROM booking_room, room
WHERE booking_room.b_id = '$b_id'
AND booking_room.r_id = room.r_id
");
$sql->execute();
$result = $sql->fetchAll(PDO::FETCH_ASSOC);
SQL返回:
r_id | r_rate
1 | 180.00
3 | 100.00
到目前为止我已尝试过:
foreach ($result as $v) {
foreach($v as $r) {
$r_id[] = $r;
}
}
$r_id = array_flip($r_id);
foreach ($r_id as $k => $v) {
$r_id[$k] = $k;
}
答案 0 :(得分:1)
这样的事情应该可以解决问题。
这将循环遍历$result
数组,查找从1开始的数字键,结束于您想要的位置,在示例中为4。如果密钥存在,我们将不管它,如果它不存在,我们将创建它并将其设置为0.
我们最后会运行ksort
来按数组键对数组项进行排序。
for ($r = 1; $r <= 4; $i++)
{
if (!array_key_exists($r, $result))
{
$result[$r] = 0;
}
}
ksort($result);