在我的项目中,我基于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
答案 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保持为空,因此您将看到当前结果。