基本上我想分割一个数组元素,如果它包含一个逗号,并保留数组中的元素顺序。
所以我有一个像这样的元素:
$array = ["coke", "joke", "two,parts", "smoke"];
我想让它找到带有逗号的那个,用逗号分成两个独立的元素并保持顺序,好像什么也没发生过一样。
这是理想的结果:
$array = ["coke", "joke", "two", "parts", "smoke"];
答案 0 :(得分:3)
希望这会有所帮助,我们正在使用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);
答案 1 :(得分:2)
简短而甜蜜:让我们使用array_reduce()
将数组简化添加到数组中:
$arr = ["coke", "joke", "two,parts", "smoke"];
function filter($v1,$v2)
{
return array_merge($v1,explode(',',$v2));
}
print_r(array_reduce($arr,"filter",[]));
不需要显式迭代或临时变量!
答案 2 :(得分:1)
这是最短,最甜蜜的方法。只需将所有元素连接成逗号分隔的字符串,然后将每个逗号上的字符串拆分回数组。
这将是最有效的方法,因为它永远不会超过两个函数调用。其他答案在输入数组的每次迭代中使用一个或多个函数调用,这只会减慢进程的速度。
此外,对逗号使用不区分大小写的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',
)
答案 3 :(得分:-2)
创建具有固定值的新数组。然后迭代原始数组并爆炸每个元素并将其附加到新数组。