Joining arrays to go in to a multidimensional array
我需要动态地生成数组的子元素,这些是数组本身。因此,最终结果应该是(这是下面代码的简化版本,以便于理解):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Array ( [id] => 5000038642 [name] => TrackVia Legacy Section of Array [description] => [table_id] => 5000005024 [records] => Array ( [0] => Array ( [id] => 1 [table_id] => 1 [fields] => Array ( [Name] => First Item ) ) [1] => Array ( [id] => 1 [table_id] => 1 [fields] => Array ( [Name] => Second Item ) ) ) ) |
结果中的嵌套数组是从mysql表动态生成的,因此>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $allItems = array(); $item = array(); // Get each result and build the arrya while($row = $resultAvailableBoxes->fetch_assoc()) { $item = array ( "id"=> $row['id'], "table_id"=> $row['id'], "fields"=> array ( "Name"=> $row['box_title'], ) ); // Append the arrays on to each other $allItems[] = array_merge($allItems, $item); } // Place the arrays within the"parent" array $completeArray = array( "id"=> 1000, "name"=>"Sample", "description"=>"", "table_id"=> 1000, "records"=> $allItems ); |
号
如您所见,在将这些数组放入"父"数组之前,我还尝试将每个新数组附加到最后一个数组。这就是问题发生的地方。
使用该方法
$allItems[] = array_merge($allItems, $item);
号
我把每个数组都附加到最后一个数组上,但是一次又一次。这样地:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | Array ( [id] => 5000038642 [name] => TrackVia Legacy Section of Array [description] => [table_id] => 5000005024 [records] => Array ( [0] => Array ( [id] => 1 [table_id] => 1 [fields] => Array ( [Name] => Texan BBQ 1 ) ) [1] => Array ( [0] => Array ( [id] => 1 [table_id] => 1 [fields] => Array ( [Name] => Texan BBQ 1 ) ) [id] => 9 [table_id] => 9 [fields] => Array ( [Name] => Goan Sorpotel with Pea & Mint Pilau and Tomato Chutney ) ) ) ) |
当我有20个项目时,你可以看到这将成为一个巨大的列表,但不起作用。使用该方法
$allItems = array_merge($allItems, $item);
号
只返回附加的最后一个数组(即,它总是覆盖"allitems"数组中已有的内容)。
我还使用了一种简单的方法,但我不希望它奏效,而且它确实没有:
$allItems .= $item;
号
我是在阅读了这些叠加流问题之后得出结论的,这些问题看起来是相同的,但并没有,或者给出了奇怪的结果,我肯定是在错误地处理这些问题。这是错误的方法完全停止,还是我遗漏了一些内容来停止不断添加子元素?
追加数组(堆栈溢出)无法在PHP中连接2个数组
我忽略了我在这个问题上看到的其他问题,包括php手册,但是我找不到任何与数组合并更相关的问题。
你为什么不这么做?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $items = array(); while($row = $resultAvailableBoxes->fetch_assoc()) { $items[] = array ( "id"=> $row['id'], "table_id"=> $row['id'], "fields"=> array ( "Name"=> $row['box_title'], ) ); } // Place the arrays within the"parent" array $completeArray = array( "id"=> 1000, "name"=>"Sample", "description"=>"", "table_id"=> 1000, "records"=> $items ); |
这应该创建一个包含所有项的数组,然后将其添加到
试着用