2017-06-13 26 views
0

我有一個空數組,我試圖通過一個簡單的PHP函數推送一個值。問題在於在每次迭代中值不會被保留。這裏是一個例子:如何通過php函數推送數組值?

function addColors($arrayValues, $arrayToUpdate){ 
    $arrayToUpdate[]=$arrayValues; 
} 

$colors = array(); 
$newColors= array("red", "blue", "yellow"); 

foreach($newColors as $newColor){ 
    addColors($newColor, $colors); 
} 

echo "<pre>".print_r($colors, true)."</pre>"; 

這將只是打印一個空的數組。而我想看到的是將值添加到$colors陣列。有什麼建議麼?

+0

將**&**添加到函數定義中的'$ arrayToUpdate'和'$ newColor',以將其作爲參考。 – Peon

+0

不太清楚你的意思,但也許你只需要通過引用傳遞數組? 'function addColors($ arrayValues,&$ arrayToUpdate){' – Plasm

回答

2

你要麼需要返回新的數組,並在循環分配返回的數組:

function addColors($arrayValues, $arrayToUpdate){ 
    $arrayToUpdate[]=$arrayValues; 
    return $arrayToUpdate; 
} 

foreach($newColors as $newColor){ 
    $colors = addColors($newColor, $colors); 
} 

還是要做到這一點,你有它的方式,傳遞需要更新作爲參考變量;請注意0​​。這是我的建議:

function addColors($arrayValues, &$arrayToUpdate){ 
    $arrayToUpdate[]=$arrayValues; 
} 

foreach($newColors as $newColor){ 
    addColors($newColor, $colors); 
} 

雖然在這個簡單的例子,我不會用一個函數:

foreach($newColors as $newColor){ 
    $colors[] = $newColor; 
} 

而且,已經有執行此功能,但參數是不同順序:

array_push($colors, $newColor); 

沒有循環更簡單:

$colors = array_merge($colors, $newColors); 
+0

太棒了!謝謝,我會在11分鐘內頒獎。 – Presto

+0

謝謝,我無法停下來繼續編輯。 – AbraCadaver