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));