2013-11-22 4 views
0

Я получил строку 1,2,3,4,5PHP строка преобразования массива

преобразовать его в PHP массив: $arr = explode(',', $myString);

Тогда я хочу повторить их от моего нового массива:

foreach ($arr as $value) { 
    echo $value; 
} 

Проблема - по какой-то причине она добавляет пустое пространство в начале моего массива! Так, например, вместо 1, наше значение равно 1 с пространством до него.

Почему это происходит и как я могу избавиться от него?

+1

Есть ли у вашей строки пробел в начале? Попробуйте '$ arr = explode (',', trim ($ myString));' – andrewsi

ответ

1

В начале строки есть пробелы.

Во всяком случае, вы можете использовать trim():

foreach ($arr as $value) 
{ 
    echo trim($value); 
} 

Или вы можете использовать его в взрываются момент:

$arr = explode(',', trim($myString)); 
+0

Просто заметьте. Цикл 'foreach' в вашем коде фактически не изменит значение. Чтобы это сделать, вам нужно передать '$ value' по ссылке. –

+0

Не уверен, что я понимаю ваш комментарий? 'Trim()' находится внутри цикла, сразу после 'echo' ... – BenM

+0

В первой части вашего ответа вы фактически не изменяете' $ arr' - просто распечатываете обрезанное значение. С помощью этого кода вы будете передавать одну и ту же старую строку функции 'explode()', и результаты будут такими же, как и раньше. –

4

Это может произойти, если строка содержит пробелы в начале или в конце. Функция explode() будет просто разделять строку на данном разделителе и не будет волноваться по поводу пробелов. Вы можете использовать array_map() обрезать пробелы из всех элементов массива:

$arr = explode(',', $myString); 
$arr = array_map('trim', $arr); 

Или вы могли бы заменить пробелы перед использованием explode(), используя регулярное выражение (или str_replace(), в зависимости от ситуации):

$myString = ' 1,2,3,4,5 '; 
$myString = preg_replace('/\s+/', '', $myString); 

Это вычеркивает все пробелы, и строка будет содержать только числа и запятые (при условии, что это то, что вы хотите).

+0

спасибо, это мне помогает :) using array_map :) – Darline

Смежные вопросы