私はCodeIgniter 2.x(PHP)でMySQLから返されたデータベースオブジェクトをループしています。配列$gifts
は、ループが開始される前にループ外で宣言されています。PHP配列がforeachループでカスタムキーを設定しない
内部ループと外部ループがあります。外側のループは、以下の2番目の配列の例を生成します。内部ループが問題の配列を生成します。
LINE 2では、$i['gifts'][$row->id_gift]
は、希望のIDで$row->id_gift
のキーを正しく設定しています。 LINE 1ではそうではありません。配列キーは、$gifts[][$sd] = $row->$sd
で設定されているかのように、0からnの順番で数値的に割り当てられています。
なぜでしょうか?
$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
}
}
}
アレイ(ライン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)
)
アレイ(ライン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。
[$行優先> id_gift]'それは '$贈り物[]'を使用しているあなたのような演技? –
投稿配列も –
@ Don'tPanic、はい、正しい。 – JessycaFrederick