PHP数组_unique被转换为对象

PHP数组_unique被转换为对象,php,arrays,json,javascript,Php,Arrays,Json,Javascript,下面是一个虚拟示例: $errors = []; for ($i = 0; $i < 3; $i++) { $errors[] = [ 'id' => $i ]; } $errors[] = [ 'id' => 0 ]; for ($i = 3; $i < 5; $i++) { $errors[] = [ 'id' => $i ]; } var_dump($errors); echo "

下面是一个虚拟示例:

$errors = [];
for ($i = 0; $i < 3; $i++) {
    $errors[] = [
        'id' => $i
    ];
}

$errors[] = [
    'id' => 0
];

for ($i = 3; $i < 5; $i++) {
    $errors[] = [
        'id' => $i
    ];
}


var_dump($errors);
echo "<br/>";
var_dump(array_unique($errors, SORT_REGULAR));

如您所见,第二种情况是缺少索引
3
。因此,当我通过API返回它时,它将作为带有键的对象返回,
0,1,2,4,5
函数
array_unique()
过滤掉相等的值,因此缺少索引的#3的原因是因为它等于#0。

您可以使用
数组\u值()重新索引数组。

JavaScript将PHP的关联数组视为对象,因为它只理解数字键控数组

您应该使用以下两种语言进行交流:

echo json_encode($errors);
因为这将导致在外部将值转换为数组,并将每个项转换为对象

var arr = JSON.parse(outputofjson_encode);

console.log(arr[0].id);

我最终使用了
数组\u值

var_dump(array_values(array_unique($errors, SORT_REGULAR)));
$errors = [];
for ($i = 0; $i < 3; $i++) {
    $errors[] = [
        'id' => $i
    ];
}

$errors[] = [
    'id' => 0
];

for ($i = 3; $i < 5; $i++) {
    $errors[] = [
        'id' => $i
    ];
}

$errors = array_values(array_unique($errors, SORT_REGULAR));
$errors=[];
对于($i=0;$i<3;$i++){
$errors[]=[
'id'=>i美元
];
}
$errors[]=[
“id”=>0
];
对于($i=3;$i<5;$i++){
$errors[]=[
'id'=>i美元
];
}
$errors=array_值(array_unique($errors,SORT_REGULAR));

array\u unique()
不会将数组转换为对象。它不会将数组转换为对象,而是将其转换为关联的arrayOkay,但我随后通过API接口返回此项,Javascript将其作为对象接收。您是否在执行类似于
json\u encode()的操作
当您返回阵列时?因为我没有看到您的响应!我把你的作为解决方案的一部分
$errors = [];
for ($i = 0; $i < 3; $i++) {
    $errors[] = [
        'id' => $i
    ];
}

$errors[] = [
    'id' => 0
];

for ($i = 3; $i < 5; $i++) {
    $errors[] = [
        'id' => $i
    ];
}

$errors = array_values(array_unique($errors, SORT_REGULAR));