如何在逗号上拆分数组字符串并创建一个维护顺序的新数组?
How to split array strings on comma and create a new array maintaining order?
基本上我想拆分包含逗号的数组元素,并保留数组中的元素顺序。
所以我有这样一个元素:
$array = ["coke", "joke", "two,parts", "smoke"];
而且我想把它找到带逗号的那个,用逗号把它分成两个单独的元素,然后保持秩序,就好像什么都没发生过一样。
这是想要的结果:
$array = ["coke", "joke", "two", "parts", "smoke"];
创建具有固定值的新数组。然后遍历原始数组并分解每个元素并将其附加到新数组。
希望这会有所帮助,这里我们使用 foreach
和 explode
来实现所需的输出。
<?php
ini_set('display_errors', 1);
$array = ["coke", "joke", "two,parts", "smoke"];
$result=array();
foreach($array as $value)
{
if(stristr( $value,","))
{
$result= array_merge($result,explode(",",$value));
}
else
{
$result[]=$value;
}
}
print_r($result);
简短而贴心:让我们使用 array_reduce()
并将数组 减少 为数组:
$arr = ["coke", "joke", "two,parts", "smoke"];
function filter($v1,$v2)
{
return array_merge($v1,explode(',',$v2));
}
print_r(array_reduce($arr,"filter",[]));
不需要显式迭代或临时变量!
这是最短、最甜蜜的方法。只需将所有元素连接成逗号分隔的字符串,然后将每个逗号上的字符串拆分回数组。
这将是最有效的方法,因为它总共不会进行超过两次的函数调用。其他答案在输入数组的每次迭代中使用一个或多个函数调用,这只会减慢过程。
此外,在逗号上使用不区分大小写的 strstr()
调用没有逻辑意义。 PHP手册甚至有一个特别的注意事项,说不要使用strstr()
进行找针。
代码:(Demo)
$array = ["coke", "joke", "two,parts", "smoke"];
var_export(explode(',', implode(',', $array)));
输出:
array (
0 => 'coke',
1 => 'joke',
2 => 'two',
3 => 'parts',
4 => 'smoke',
)
基本上我想拆分包含逗号的数组元素,并保留数组中的元素顺序。
所以我有这样一个元素:
$array = ["coke", "joke", "two,parts", "smoke"];
而且我想把它找到带逗号的那个,用逗号把它分成两个单独的元素,然后保持秩序,就好像什么都没发生过一样。
这是想要的结果:
$array = ["coke", "joke", "two", "parts", "smoke"];
创建具有固定值的新数组。然后遍历原始数组并分解每个元素并将其附加到新数组。
希望这会有所帮助,这里我们使用 foreach
和 explode
来实现所需的输出。
<?php
ini_set('display_errors', 1);
$array = ["coke", "joke", "two,parts", "smoke"];
$result=array();
foreach($array as $value)
{
if(stristr( $value,","))
{
$result= array_merge($result,explode(",",$value));
}
else
{
$result[]=$value;
}
}
print_r($result);
简短而贴心:让我们使用 array_reduce()
并将数组 减少 为数组:
$arr = ["coke", "joke", "two,parts", "smoke"];
function filter($v1,$v2)
{
return array_merge($v1,explode(',',$v2));
}
print_r(array_reduce($arr,"filter",[]));
不需要显式迭代或临时变量!
这是最短、最甜蜜的方法。只需将所有元素连接成逗号分隔的字符串,然后将每个逗号上的字符串拆分回数组。
这将是最有效的方法,因为它总共不会进行超过两次的函数调用。其他答案在输入数组的每次迭代中使用一个或多个函数调用,这只会减慢过程。
此外,在逗号上使用不区分大小写的 strstr()
调用没有逻辑意义。 PHP手册甚至有一个特别的注意事项,说不要使用strstr()
进行找针。
代码:(Demo)
$array = ["coke", "joke", "two,parts", "smoke"];
var_export(explode(',', implode(',', $array)));
输出:
array (
0 => 'coke',
1 => 'joke',
2 => 'two',
3 => 'parts',
4 => 'smoke',
)