2015-11-07 128 views
2

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

$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

你不需要有$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); 
+0

太棒了,这很好用!太好了,太快了。 – Piet

2

你正在创建在每次迭代一个新的动态数组:

$dynamicArray = 
     [ 
      $i => 
      [ 
       'id' => $key, 
       'name' => $value['options'] 
      ] 
     ]; 

相反,声明$ dynamicArray = [];在foreach之上,然后用:

array_push($dynamicArray, [ 'id' => $key, 'name' => $value['options']); 

里面的数组。

+0

也感谢您的工作答案和非常快速的回复! – Piet