PHP Взрыв строки в массив

У меня есть цикл, который содержит строку значений, разделенных запятыми.

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)

Как я могу взять разнесенные значения и поместить их все в один массив? Спасибо!

0

Решение

[]= оператор означает добавить в массив. explode Метод возвращает массив, поэтому вы добавляете массив в массив.

поскольку profiles вероятно содержит 2 элемента, вы получаете массив размером 2 разнесенных строк

то, что вы, вероятно, ищете array_merge

замените внутреннюю часть цикла следующим образом:

$exploded    = exlpode(', ', '[string of comma seperated states]');
$user_states = array_merge($user_states, $exploded)
2

Другие решения

Что вам нужно это:

$user_states = array();
foreach ($profiles as $profile) {
$user_states = array_merge($user_states, exlpode(', ', '[string of comma seperated states]'));
}

С Уважением,
Valentin

1

Используйте функцию слияния:

$states=array();

foreach ($profiles as $profile) {
$user_states = exlpode(', ', '[string of comma seperated states]');
array_merge($states,$user_states);
}

var_dump($states);
1

Ты можешь попробовать

$user_states = array();
...
$user_states += explode(', ', '[string of comma seperated states]');
...

Это продолжит добавлять массивы ‘explode’ в основной массив $ user_states.

1

Так как я не знаю, что у вас есть в $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
)
1

Ты пробовал это

$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);
1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector