gpt4 book ai didi

php - unset() 将数组转换为对象

转载 作者:可可西里 更新时间:2023-11-01 12:46:46 30 4
gpt4 key购买 nike

我有一个数组,我想从中取消设置第一项,但是当我这样做时,我将信息作为 JSON 发送,结果作为对象读取。

PHP 数组如下所示:

$myArray = ["one", "two", "three", "four"]

当我使用 json_encode($myArray) 将其作为 JSON 发送时,正如我所料:

["one","two","three","four"]

但是当我第一次取消设置时:

unset($myArray[0]);

...我从 json_encode($myArray) 获取的 JSON 内容如下:

{"1":"one","2":"two"}

是什么让它如此,我如何防止它出现在对象表示法中?

据我所知,在 PHP 中,剩余数组的行为类似于数组,我可以使用数组函数,例如 array_searcharray_intersect 等。

最佳答案

在 JSON 中,数组始终从索引 0 开始。因此,如果在 PHP 中删除元素 0,则数组从 1 开始。但这不能用 JSON 中的数组符号表示。所以它被表示为一个对象,它支持键/值对。

要使 JSON 将数据表示为数组,您必须确保数组从索引 0 开始并且没有间隙。

要做到这一点,不要使用unset,而是使用array_splice :

array_splice($myArray, 0, 1);

这样你的数组就会移动,确保第一个元素位于索引 0。

如果它始终是您要删除的第一个元素,那么您可以使用较短的 array_shift :

array_shift($myArray);

如果您不想改变原始数组,或者可能有多个间隙,那么 array_values 是可行的方法,它返回一个没有间隙的新数组:

array_values($myArray);

关于php - unset() 将数组转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35672604/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com