作者:mobiledu2502855247 | 来源:互联网 | 2023-05-18 16:10
我一直想知道是否有可能强制json_encode
返回Array
而不是Object
仍然保持"整数"指数.
如果你问的话是我想要实现的是一组用户名(其userID是数组中的键).
所以如果我在PHP中有这样的共同朋友列表:
1 => 'John Doe',
2 => 'Jane Doe',
5 => 'Oliver Natefield',
11 => 'Chris Cole'
我想用json_encode
,我尝试了两种方法.
第一个是通过简单地添加到空的PHP数组中,将值添加到它们各自的索引(userID).
$name )
$list[ $userID ] = $name;
echo json_encode( $list );
?>
这让我Object
很伤心.好的,然后我尝试了别的东西......
$name )
array_splice( $list, $userID, 0, $name );
echo json_encode( $list );
?>
再一次,失败了,这一次,它是一个Array
,但indexes
没有考虑到.
我知道..数组应该是这样的:
undefined, // userID 0
'John Doe', // userID 1
'Jane Doe', // userID 2
undefined, // userID 3
undefined, // userID 4
'Oliver Natefield', // userID 5
undefined, //userID 6
undefined, // etc
但是......如果我有一个朋友与userID
索引1504
..不应该有内存的缺点?
虽然我们正在使用它,但我可以看到一组1000
未定义元素使用多少内存?它是相关的,因为如果它消耗太多内存,我只需要搜索username
一个特定的对象之后的对象数组userID
.
1> Marc B..:
这实际上是不可能的.它是Javascript语法的限制,基本上就是JSON.您不能像使用PHP一样在Javascript"快捷方式"数组定义中指定数组键.例如
$foo = array(1 => 'a', 10 => 'b');
JS中没有这样的符号,唯一允许的快捷方式是
foo = ['a', 'b'];
这会给你PHP等价物0 => 'a', 1 => 'b'
.要使用非顺序数组键,必须使用Object:
foo = {1: 'a', 10: 'b'};