[英]array_merge function doesn't work properly in Laravel
在我的项目中,我根据regex
值拆分数组索引值。 但是当我想将所有数组合并在一起时,合并功能不会合并。
这是我的代码示例。
$testarray=array();
$merge_array=array();
//receive parameter is Admin|Manager,User@Test
foreach ($roles as $value) {
if(preg_match("/[@#%$|:\s,]+/",$value))
{
$testarray=preg_split("/[@#%$|:\s,]+/",$value);
}
print_r(array_merge($merge_array,$testarray));
}
print_r显示此结果。
数组([0] =>管理员[1] =>管理器)数组([0] =>用户[1] =>测试)
您只是合并数组,但不将结果分配给任何变量,正确的代码是:
//receive parameter is Admin|Manager,User@Test
foreach ($roles as $value) {
if(preg_match("/[@#%$|:\s,]+/",$value))
{
$testarray=preg_split("/[@#%$|:\s,]+/",$value);
}
// here you add $testarray values to
// `$merge_array` on each iteration
$merge_array = array_merge($merge_array,$testarray);
}
// print result array after loop
print_r($merge_array);
Laravel框架与您的问题无关。 您正在使用PHP的标准功能。
array_merge函数不会修改您提供给它的数组,但是会提供结果数组作为其输出。 因此,您应该将array_merge的结果分配给$ merge_array。
请尝试以下代码:
$testarray = array();
$merge_array = array();
//receive parameter is Admin|Manager,User@Test
foreach ($roles as $value) {
if(preg_match("/[@#%$|:\s,]+/",$value))
{
$testarray = preg_split("/[@#%$|:\s,]+/",$value);
}
$merge_array = array_merge($merge_array, $testarray);
}
print_r($merge_array);
您似乎认为错了。 print_r(array_merge($merge_array,$testarray));
上一行在“ foreach”循环中。 在这种情况下,要获得合并结果,您应该执行以下操作; $merge_array = array_merge($merge_array,$testarray)
在您的代码中,$ merge_array保持为空,因此您将看到当前结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.