1

我必须遗漏一些明显的东西:我在查询运行后返回一个关联数组,并且对于我希望附加的每个嵌套数组 $child['Is_Child'] = '0';当我打印出$child数组时它是正确的,但$child_participants数组没有附加它;为什么?

if ($query->num_rows() > 0)
        {
           $child_participants= $query->result_array();
           foreach($child_participants as $child) 
             {
               $child['Is_Child'] = '0';
             }

           return $child_participants;

         }
4

4 回答 4

3

您在 php 数组中声明的$child变量foreach是不可变的,除非您告诉 php 使用运算符使其可变&

foreach($child_participants as &$child) 
{
    $child['Is_Child'] = '0';
}
于 2013-09-20T23:28:44.950 回答
3

默认情况下,$child是原始数组元素的副本。您需要使用引用来修改实际元素:

foreach ($child_participants as &$child) {
    $child['Is_Child'] = '0';
}

操作员将此作为&参考。

于 2013-09-20T23:28:52.070 回答
2

通过使用传递引用而不是值&$child

foreach($child_participants as &$child)
于 2013-09-20T23:28:52.893 回答
2

因为您正在修改$child它的名称,而不是父数组。

你可以这样做:

if ($query->num_rows() > 0)
{
   $child_participants= $query->result_array();
   foreach($child_participants as $key => $child) 
    {
        $child_participants[$key]["Is_Child"] = '0'; ;
    }

   return $child_participants;

}
于 2013-09-20T23:28:53.730 回答