Результат этого кода:
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;
:
[
[
[
{
"a": "1",
"b": "2",
"c": "3"
}
]
],
{
"1": [
{
"a": "1",
"b": "2",
"c": "3"
}
]
},
{
"2": [
{
"a": "1",
"b": "2",
"c": "3"
}
]
},
{
"3": [
{
"a": "1",
"b": "2",
"c": "3"
}
]
},
{
"4": [
{
"a": "1",
"b": "2",
"c": "3"
}
]
},
{
"5": [
{
"a": "1",
"b": "2",
"c": "3"
}
]
},
{
"6": [
{
"a": "1",
"b": "2",
"c": "3"
}
]
},
{
"7": [
{
"a": "1",
"b": "2",
"c": "3"
}
]
}
]
Можно ли заметить, как это пропускает первое число, которое является нулем? Вопрос: Почему?
Вам нужен json_encode ($ a, JSON_FORCE_OBJECT). К сожалению, это добавлено только в версии 5.3.
Это хитрость, но вы можете добавить фиктивный элемент.
$a = array('dummy'=>1);
for($i = 0; $i <= 7; $i++) {
...
Вы не проиндексировали свой массив
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;
**EDIT:**На моем ноутбуке, если я делаю print_r($a); я получаю этот массив:
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
)
)
)
)