问题很简单,我想动态创建下面的数组,但我现在得到的代码只输出最后一行。有没有人知道我的动态数组创建有什么问题?
$workingArray = [];
$workingArray =
[
0 =>
[
'id' => 1,
'name' => 'Name1',
],
1 =>
[
'id' => 2,
'name' => 'Name2',
]
];
echo json_encode($workingArray);
/* My not working array */
$i = 0;
$code = $_POST['code'];
$dynamicArray = [];
foreach ($Optionsclass->get_options() as $key => $value)
{
if ($value['id'] == $code)
{
$dynamicArray =
[
$i =>
[
'id' => $key,
'name' => $value['options']
]
];
$i++;
}
}
echo json_encode($dynamicArray);
答案 0 :(得分:2)
你不需要$i
那些为你不想要的数组添加另一个级别的东西。
$code = $_POST['code'];
$dynamicArray = [];
foreach ($Optionsclass->get_options() as $key => $value)
{
if ($value['id'] == $code)
{
$dynamicArray[] = ['id' => $key, 'name' => $value['options'];
}
}
echo json_encode($dynamicArray);
答案 1 :(得分:2)
您正在每次迭代时创建一个新的动态数组:
$dynamicArray =
[
$i =>
[
'id' => $key,
'name' => $value['options']
]
];
相反,声明$ dynamicArray = [];在foreach之上,然后使用:
array_push($dynamicArray, [ 'id' => $key, 'name' => $value['options']);
在数组内部。