У меня есть цикл, который содержит строку значений, разделенных запятыми.
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]'));
}
С Уважением,
Valentin
Используйте функцию слияния:
$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);