2015-11-19 117 views
1

在PHP中,如何將[2]的值添加到數組的主體中而不是將其作爲子數組使用?我試過array_push,+連接器和array_merge,但沒有工作。將數組合併到主數組中

Array 
(
    [0] => 42299.37181713 
    [1] => Yes 
    [name] => Bob Smith 
    [country] => United Kingdom 
    [2] => Array 
    (
     [0] => Name 1 
     [1] => Name 2 
     [2] => Name 3 
     [3] => 
    ) 

我正在尋找/需要的是一種方式來獲得下面的(我敢肯定有這樣做的一個簡單/正確的PHP方式!):

Array 
(
    [0] => 42299.37181713 
    [1] => Yes 
    [name] => Bob Smith 
    [country] => United Kingdom 
    [2] => Name 1 
    [3] => Name 2 
    [4] => Name 3 
    [5] => 

感謝你的答案 - 我現在已經張貼了我的解決方案的答案:)之一

+0

你怎麼擺在首位的是數組? – Calimero

+0

他們是兩個單獨的數組,所以第一部分是我目前得到的,如果我使用說array_merge。 – Ukuser32

+0

array_merge()應該做你想要的,我的猜測是你以某種方式錯誤地使用了#1而不是#2。 – Calimero

回答

1

這裏的問題是,我是在做

foreach ($data as $row){ 

然後我試圖在$ row上做array_merge或者在$ row上使用+,但即使print_r指出它是一個Array,它們本身也不是數組。

所以解決的辦法是做到以下幾點:你實際上是在合併數組不是從數組設置的值

foreach ($data as $k=>$row){ 
    $new_row = array_merge($data[$k],$sub_array); 

這樣。

+0

看到我的答案,它正在按照您的預期工作。 –

3
<?php 
$myArray = array(
    0 => 42299.371, 
    1 => "Yes", 
    "name" => "Bob Smith", 
    "country" => "United Kingdom", 
    2 => array(
     0 => "Name 1", 
     1 => "Name 2", 
     2 => "Name 3" 
     ) 
    ); 

$tmp = $myArray[2]; 
unset($myArray[2]); 

$myArray = array_merge($myArray, $tmp); 

echo '<pre>'; 
print_r($myArray); 
echo '</pre>'; 
+0

對不起$ myArray是輸出不是我必須從事的工作。 – Ukuser32

+1

那麼源數據的任何機會呢? – SheppardDigital

1

,如果你得到數組分別可以使用array_merge:

$a = ['whashington', 'NewYork', 98]; 
$b = ['fruits', 'clothes', 4]; 
$a = array_merge($a, $b); 

array (size=6) 
    0 => string 'whashington' (length=11) 
    1 => string 'NewYork' (length=7) 
    2 => int 98 
    3 => string 'fruits' (length=6) 
    4 => string 'clothes' (length=7) 
    5 => int 4 
1

你可以做這樣的事情來獲得期望的結果,

<?php 

    $multi_array = array 
    (
     0 => 42299.37181713, 
     1 => "Yes", 
     "name" => "Bob Smith", 
     "country" => "United Kingdom", 
     2 => array 
     (
      0 => "Name 1", 
      1 => "Name 2", 
      2 => "Name 3", 
     ) 
    ); 

    $tmp = $multi_array[2]; 
    unset($multi_array[2]); 
    $i = 2; 
    foreach($tmp as $value){ 
     $multi_array[$i] = $value; 
     ++$i; 
    } 

    print_r($multi_array); 

?> 
1

我明白,你有興趣合併子數組作爲父數組的元素。

你可能會實現它這樣做的:

$tmp_arr = array(); 
foreach ($data as $k=>$v) { 
    if (is_array($v)) { 
    $tmp_arr = array_merge($tmp_arr, $v); 
    } else { 
    $tmp_arr[] = $v; 
    } 
} 
相關問題