我有一个循环,其中包含一串逗号分隔的值。
foreach ($profiles as $profile) {
$user_states[] = exlpode(', ', '[string of comma seperated states]');
}
我遇到的问题是
$user_states
数组最终成为两个级别,循环的每次迭代都会创建一个嵌套数组。
array (size=2)
0 =>
array (size=3)
0 => string 'DC' (length=2)
1 => string 'Maryland' (length=8)
2 => string 'Northern-Virginia' (length=17)
1 =>
array (size=1)
0 => string 'North-Carolina,Virginia' (length=23)
如何获取分解值并将它们全部放入一个数组中?
[]=
运算符表示添加到数组。 explode
方法,返回一个数组,所以你要做的就是将一个数组添加到数组中。
由于
profiles
可能包含 2 个元素,因此您将获得一个大小为 2 的分解字符串数组
array_merge
用这个替换循环的内部部分:
$exploded = exlpode(', ', '[string of comma seperated states]');
$user_states = array_merge($user_states, $exploded)
您需要的是:
$user_states = array();
foreach ($profiles as $profile) {
$user_states = array_merge($user_states, exlpode(', ', '[string of comma seperated states]'));
}
问候, 瓦伦丁
使用合并功能:
$states=array();
foreach ($profiles as $profile) {
$user_states = exlpode(', ', '[string of comma seperated states]');
array_merge($states,$user_states);
}
var_dump($states);
你可以试试
$user_states = array();
...
$user_states += explode(', ', '[string of comma seperated states]');
...
这将继续将“explode”数组添加到主 $user_states 数组中。
因为我不知道你的
$profiles
有什么,所以我给你一个简单的例子。
$user_states = array();
$profiles = array('UK, FR, CA, AU', 'UK, FR, CA, AU', 'NW');
foreach ($profiles as $profile)
{
$extract = explode(', ', $profile);
$user_states = array_merge($user_states, $extract);
}
// if you want to remove duplications
$user_states = array_unique($user_states);
echo '<pre>';
print_r($user_states);
会给你:
Array
(
[0] => UK
[1] => FR
[2] => CA
[3] => AU
[8] => NW
)
并且
如果你不使用
array_unique()
Array
(
[0] => UK
[1] => FR
[2] => CA
[3] => AU
[4] => UK
[5] => FR
[6] => CA
[7] => AU
[8] => NW
)
你尝试过这个吗
$user_states = exlpode(', ', '[string of comma seperated states]');
编辑:
如果我没记错的话,这段代码对你有帮助
$profiles = array( "yale, ny, la", "boston, vegas");
$user_states = array();
foreach ($profiles as $profile) {
$tmp = explode(', ', $profile);
$user_states = array_merge( $tmp, $user_states);
}
var_dump($user_states);
费心进行迭代爆炸和合并调用是间接的。
只需使用与分解每个字符串相同的分隔符来分解整个一维数组,然后分解该单个字符串。
代码:(演示)
$array = [
'DC, Maryland, Northern-Virginia',
'North-Carolina, Virginia',
];
var_export(explode(', ', implode(', ', $array)));
/*
array (
0 => 'DC',
1 => 'Maryland',
2 => 'Northern-Virginia',
3 => 'North-Carolina',
4 => 'Virginia',
)
*/
如果你绝对需要使用循环(可能是因为你每次迭代都在执行其他操作,那么就不要费心合并;使用
array_push()
来做它唯一有用的事情——一次将多个元素推入数组中。使用扩展运算符允许 array_push()
将生成的元素单独推送到结果数组中。
代码:(演示)
$result = [];
foreach ($array as $string) {
array_push($result, ...explode(', ', $string));
}
var_export($result);
// same result as previous snippet