PHP数组构建与foreach循环

时间:2014-10-10 18:45:56

标签: php jquery arrays json

我正在尝试构建一个可以使用JSON输出的数组。无论出于何种原因,它只会向数组添加一个元素,即使有多个电子邮件地址与对象一起返回。我知道这是因为循环执行的次数正确。但是,新值不会添加到数组中。我尝试了array_push,但它形成了数组,jQuery不会正确处理它。

        $load_model = $this->loadModel("LoadModel");
        $x = $load_model->updateLoad($LoadRate, $carrID, $comment, $temp, $loadStatus, $contactID, $load_id);
            if($x==true){
                $arr=array();
                foreach($load_model->loadEmailAddresses($load_id) as $val){
                   $arr['Email']= $val->Email;
                   $arr['ContactId']= $val->ContactId;
                }
                echo json_encode($arr);
            }

任何想法?

2 个答案:

答案 0 :(得分:4)

您在循环中反复设置相同的元素。每次循环时,它都会设置$arr['Email']$arr['ContactId']。最后,您将只获得循环中的最后一个值。您需要为电子邮件和联系人ID创建一个数组,然后将该数组添加到$arr

$load_model = $this->loadModel("LoadModel");
$x = $load_model->updateLoad($LoadRate, $carrID, $comment, $temp, $loadStatus, $contactID, $load_id);
    if($x==true){
        $arr=array();
        foreach($load_model->loadEmailAddresses($load_id) as $val){
           $arr[] = array('Email' => $val->Email, 'ContactId' => $val->ContactId);
        }
        echo json_encode($arr);
    }

答案 1 :(得分:1)

您应该将foreach循环中的行更改为

$arr[] = array(
    'Email'=>$val->Email,
    'ContactId'=>$val->ContactId,
);

此时你的阵列应该正常增长。