删除 PHP 中数组给定键的元素

  • 本文关键字:元素 PHP 数组 删除 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":"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));

或者不更改要导出的最终数组

最新更新