$nesAry=array();
$nesAry["name"]="abc";
$nesAry["email"]="abc@email.com";
$nesAry1=array();
$nesAry1["name"]="abc1";
$nesAry1["email"]="abc1@email.com";
$nesAry2=array();
$nesAry2["name"]="abc2";
$nesAry2["email"]="abc2@email.com";
$responseAry = array();
$responseAry[0]=$nesAry;
$responseAry[1]=$nesAry1;
$responseAry[2]=$nesAry2;
echo json_encode($responseAry); // here output like this => [{"name":"abc","email":"abc@email.com"},{"name":"abc1","email":"abc1@email.com"},{"name":"abc2","email":"abc2@email.com"}]
unset($responseAry[1]);
echo "------------removed 1--------";
echo json_encode($responseAry); // but here output like this => {"0":{"name":"abc","email":"abc@email.com"},"2":{"name":"abc2","email":"abc2@email.com"}}
我想要 删除元素后像这样放 [{"名称":"abc","电子邮件":"abc@email.com"},{"名称":"abc2","电子邮件":"abc2@email.com"}]
请帮助我
尝试在取消设置项目后重新生成数组:
$nesAry=array();
$nesAry["name"]="abc";
$nesAry["email"]="abc@email.com";
$nesAry1=array();
$nesAry1["name"]="abc1";
$nesAry1["email"]="abc1@email.com";
$nesAry2=array();
$nesAry2["name"]="abc2";
$nesAry2["email"]="abc2@email.com";
$responseAry = array();
$responseAry[0]=$nesAry;
$responseAry[1]=$nesAry1;
$responseAry[2]=$nesAry2;
echo json_encode($responseAry); // __here output like this => [{"name":"abc","email":"abc2@email.com"},{"name":"abc1","email":"abc1@email.com"},{"name":"abc2"}]__
unset($responseAry[1]);
$responseAry = array_values($responseAry); //regenerate array(reindexing)
echo "------------removed 1--------";
echo json_encode($responseAry); //[{"name":"abc","email":"abc@email.com"},{"name":"abc2","email":"abc2@email.com"}]
编辑:
作为其他选项,您可以使用array_splice
方法 http://php.net/manual/en/function.array-splice.php
$nesAry=array();
$nesAry["name"]="abc";
$nesAry["email"]="abc@email.com";
$nesAry1=array();
$nesAry1["name"]="abc1";
$nesAry1["email"]="abc1@email.com";
$nesAry2=array();
$nesAry2["name"]="abc2";
$nesAry2["email"]="abc2@email.com";
$responseAry = array();
$responseAry[0]=$nesAry;
$responseAry[1]=$nesAry1;
$responseAry[2]=$nesAry2;
echo json_encode($responseAry); // __here output like this => [{"name":"abc","email":"abc2@email.com"},{"name":"abc1","email":"abc1@email.com"},{"name":"abc2"}]__
array_splice($responseAry,1,1);
echo "------------removed 1--------";
echo json_encode($responseAry);
首次转换为 json 时的数组是所谓的"关联"数组,然后json_encode将其导出到您在第一个回显中看到的对象。
取消设置后,数组将更改为"数字"数组,json_encode将导出带有数组键的数组。
Php it 本身并不关心数组的使用方式,但json_encode关心
。您可以使用
echo json_encode(array_values($responseAry));
或者不更改要导出的最终数组