2017-06-13 27 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