我正在尝试构建一个可以使用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);
}
任何想法?
答案 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,
);
此时你的阵列应该正常增长。