我在CodeIgniter 2.x(PHP)中循环遍历MySQL返回的数据库对象。数组$gifts
在开始之前已在循环外声明。
有一个内环和一个外环。外部循环生成下面的第二个数组示例。内部循环生成问题数组。
在第2行中,$i['gifts'][$row->id_gift]
正确设置了所需ID $row->id_gift
的密钥。在LINE 1中,它不是。数组键以0-n的顺序按数字顺序分配,就像使用$gifts[][$sd] = $row->$sd
设置一样。
对于为什么有任何想法?
$query = $this->db->get();
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
foreach ($select_details as $sd)
{
$gifts[$row->id_gift][$sd] = $row->$sd; // LINE 1
$i['gifts'][$row->id_gift] = array('merchant_rank'=>$i['merchant_rank'],'rank'=>$row->rank); // LINE 2
}
}
}
$select_details = array('id_gift','id_group','rank');
数组(LINE 1)输出样本:
Array (
[0] =>
Array (
[id_gift] => 392
[id_group] => 244
[rank] => 1
)
[1] => Array (
[id_gift] => 287
[id_group] => 239
[rank] => 1
)
[2] => Array (
[id_gift] => 264
[id_group] => 4
[rank] => 1)
)
数组(LINE 2)输出样本(注意gifts
数组中的正确键):
Array (
[0] => Array
(
[id] => 49
[id_group] => 49
[id_merchants] => 116
[gifts] => Array
(
[392] => Array
(
[merchant_rank] => 1
[rank] => 1
)
[287] => Array
(
[merchant_rank] => 1
[rank] => 2
)
[264] => Array
(
[merchant_rank] => 1
[rank] => 3
)
)
)
)
已解决。如果您感到好奇,请参阅下面的回答。感谢您的帮助@Spartan和@DontPanic。
答案 0 :(得分:1)
好的,我发现了问题。你们中间经验丰富的程序员可能并不会感到惊讶。
稍后在脚本中我正在使用多维数组排序来破坏密钥。我确信有一种方法可以防止这种情况,但这与此无关。
usort($gifts, function($a, $b) {
return $a['rank'] - $b['rank'];
});