2017-09-13 182 views
0

我使用不同的鍵從MySQL卸載4個不同的表。我需要將它們組合成一個數組。我會按日期排序(但它不重要,我知道如何去做)。如何將4個多維數組合併爲1個多維

依我之見:

foreach ($rows2 as $msgs2) { 
$arraynew = array_merge($arraynew, array('cost' => $msgs2['vivod'], 'date' => $msgs2['date'], 'type' => '1')); 
} 

foreach ($rows3 as $msgs3) { 
$arraynew = array_merge($arraynew, array('cost' => $msgs3['price'], 'date' => $msgs3['data'], 'type' => '2')); 
} 

foreach ($rows4 as $msgs4) { 
$arraynew = array_merge($arraynew, array('cost' => $msgs4['price'], 'date' => $msgs4['data'], 'type' => '3')); 
} 

foreach ($rows5 as $msgs5) { 
    $arraynew = array_merge($arraynew, array('cost' => $msgs5['cost'], 'date' => $msgs5['data'], 'type' => '4')); 
} 

但它不工作。

+0

你可以用在你的SQL,以獲得相同的字段名稱:'選擇vivod AS價格從items'如果幫助。 – Progrock

+0

如果你在陣列合併中的數組中包裝你的數組,你的array_merge應該可以工作。不過,我不建議使用'array_merge'將一個附加元素添加到數組末尾,而是使用:'$ array [] = $ var;'。 – Progrock

+0

當你說它不起作用時,說出它在做什麼以及它與你期望的有什麼不同是很有用的。如果可能的話,舉一個你想要的結果的例子。 – Progrock

回答

0
<?php 

$foos = [ 
    ['vivod' => '11', 'date' => '20140112'], 
    ['vivod' => '23', 'date' => '20140113'] 
]; 
$bars = [ 
    ['price' => '29', 'date' => '20171201'], 
    ['price' => '31', 'date' => '20170102'] 
]; 

$result = array(); 

foreach ($foos as $foo) { 
    $result[] = array('cost' => $foo['vivod'], 'date' => $foo['date'], 'type' => '1'); 
} 

foreach ($bars as $bar) { 
    $result[] = array('cost' => $bar['price'], 'date' => $bar['date'], 'type' => '2'); 
} 

var_export($result); 

輸出:

array (
    0 => 
    array (
    'cost' => '11', 
    'date' => '20140112', 
    'type' => '1', 
), 
    1 => 
    array (
    'cost' => '23', 
    'date' => '20140113', 
    'type' => '1', 
), 
    2 => 
    array (
    'cost' => '29', 
    'date' => '20171201', 
    'type' => '2', 
), 
    3 => 
    array (
    'cost' => '31', 
    'date' => '20170102', 
    'type' => '2', 
), 
) 
+0

$ result = []; - 在[]發誓,崩潰PHP。 –

+0

您必須使用舊版本的Php(<5.4)。將該行替換爲'$ result = array();'。 – Progrock

0

你所尋找的是array_merge_recursive

<?php 
$ar1 = array("color" => array("favorite" => "red"), 5); 
$ar2 = array(10, "color" => array("favorite" => "green", "blue")); 
$result = array_merge_recursive($ar1, $ar2); 
print_r($result); 
?> 

輸出

Array 
(
    [color] => Array 
     (
      [favorite] => Array 
       (
        [0] => red 
        [1] => green 
       ) 

      [0] => blue 
     ) 

    [0] => 5 
    [1] => 10 
) 
0

使用array_reduce($array, 'array_merge', array())

例子:

$a = array(array(1, 2, 3), array(4, 5, 6),array(7, 8, 9),array(10, 11, 12)); 
$result = array_reduce($a, 'array_merge', array());`