在Laravel中array_merge函数无法正常工作

时间:2018-12-23 10:37:47

标签: php 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显示此结果。

  

Array([0] => Admin [1] => Manager)Array([0] => User [1] => Test

3 个答案:

答案 0 :(得分:1)

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);

答案 1 :(得分:0)

您只是合并数组,但不将结果分配给任何变量,正确的代码是:

//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);

答案 2 :(得分:0)

您似乎认为错了。 print_r(array_merge($merge_array,$testarray)); 上一行在“ foreach”循环中。 在这种情况下,要获得合并结果,您应该执行以下操作; $merge_array = array_merge($merge_array,$testarray)

在您的代码中,$ merge_array保持为空,因此您将看到当前结果。