2017-09-13 4 views
0

異なるキーでMySQLから4つの異なるテーブルをアンロードします。私は1つの配列にそれらを組み合わせる必要があります。私は日付でソートします(しかし、それは重要ではなく、私はそれを行う方法を知っています)。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')); 
} 

しかし、それは動作しません。 array_merge_recursiveであるあなたが探している

+0

あなたは同じフィールド名を取得するには、あなたのSQLのように使用することもできます。その場合は 'items'からの価格AS vivodを選択助けてください。 – 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

<?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());`