Php 为什么可以';我是否将0设置为数组中的第一个键?
此代码的结果是:Php 为什么可以';我是否将0设置为数组中的第一个键?,php,json,arrays,Php,Json,Arrays,此代码的结果是: for($i = 0; $i <= 7; $i++){ $eachone[] = array ('a' => '1', 'b' => '2', 'c' => '3'); $a[] = array($i => $eachone); unset($eachone); } $json_string = json_encode($a); echo $json_string; 你能注意到它是如何跳过第一个数字的吗,它是零?问题是:为什么?
for($i = 0; $i <= 7; $i++){
$eachone[] = array ('a' => '1', 'b' => '2', 'c' => '3');
$a[] = array($i => $eachone);
unset($eachone);
}
$json_string = json_encode($a);
echo $json_string;
你能注意到它是如何跳过第一个数字的吗,它是零?问题是:为什么?您没有为数组编制索引
for($i = 0; $i <= 7; $i++)
{
$eachone[$i] = array ('a' => '1', 'b' => '2', 'c' => '3');
$a[$i] = array($i => $eachone);
unset($eachone);
}
$json_string = json_encode($a);
echo $json_string;
您需要json_编码($a,json_FORCE_对象)。不幸的是,它只是在5.3中添加的。这是一个hack,但您可以预先添加一个伪元素
$a = array('dummy'=>1);
for($i = 0; $i <= 7; $i++) {
...
$a=array('dummy'=>1);
对于($i=0;$i您使用的是什么版本的PHP?我可以在5.3.0上复制它。问题在于json_encode-print_'r'ing$a数组显示它的索引正确。Hmmm。我可以在PHP5.1.6上复制它。谷歌搜索似乎什么都没有,也就是说没有直接的搜索词。+1。您在PHP5.1.6上!??!天啊从技术上讲,我们的服务器是不必要的。[]语法应该会自动增加索引(显然从0开始)。如果$a已经有项,并且他的for循环只是简单地添加到这些项,那么您的服务器将无法正常工作。此外,还有一个更简单的测试用例:php-r'var_dump(json_encode(array(0=>0),array(1=>1));'string(13) "[[0],{"1":1}]"我甚至无法测试它,因为Rackspace云站点被困在@5.2.6。我将尝试解决这个json_编码问题。很好,我成功地从一个对象而不是一个数组中正确使用json_编码。问题是它到处输出字符串,而不是像我在某些情况下需要的整数,但我稍后会处理。谢谢!
Array
(
[0] => Array
(
[0] => Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
)
)
)
[1] => Array
(
[1] => Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
)
)
)
[2] => Array
(
[2] => Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
)
)
)
[3] => Array
(
[3] => Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
)
)
)
[4] => Array
(
[4] => Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
)
)
)
[5] => Array
(
[5] => Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
)
)
)
[6] => Array
(
[6] => Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
)
)
)
[7] => Array
(
[7] => Array
(
[0] => Array
(
[a] => 1
[b] => 2
[c] => 3
)
)
)
)
$a = array('dummy'=>1);
for($i = 0; $i <= 7; $i++) {
...