PHP - 如何创建这样的数组?

时间:2015-11-07 11:00:42

标签: php arrays

问题很简单,我想动态创建下面的数组,但我现在得到的代码只输出最后一行。有没有人知道我的动态数组创建有什么问题?

$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);

2 个答案:

答案 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']);

在数组内部。