繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM