Попытка зациклиться внутри массива

Я работаю над файлом PHP.

Есть строковый массив, который я получаю через POST:

$str = (45,42,12,);

Сначала убираю последнюю запятую:

$str = substr($string_temas,0,-1);

Я получаю тогда

$str = (45,42,12);

Чтобы проверить это, я повторил это:

echo "str value=".$str;

И я получаю как результат эха:

значение str = 45,42,12

Затем я пытаюсь выполнить цикл для каждого элемента, например:

foreach ($str as $value) {

        }

но я получаю сообщение об ошибке:

Недопустимый аргумент для foreach () в ..... строке (foreach ($str as $value) {

Что я делаю неправильно?

Вы пытаетесь перебрать строку, а не массив.

AnTrakS 10.09.2018 11:29

Вы получаете (45,42,12,) или 45,42,12 в почтовых данных?

Bhavin Solanki 10.09.2018 11:29

вы должны указать исходный массив

Beginner 10.09.2018 11:30

Вы должны взорвать струну

GAURAV VAGHELA 10.09.2018 11:34

$ str = взорваться (',', $ str);

GAURAV VAGHELA 10.09.2018 11:34

если вы получите «45,42,12» в вашем POST (с завершающим «,»), вы также должны исправить то, что вы отправляете.

Jeff 10.09.2018 11:38
0
6
115
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Если ваша последняя строка - 45,42,12, вы можете использовать функцию взорваться для PHP

$finalArray = explode(",",$str);

foreach ($finalArray as $value) {

}

Это правильное решение, вместо использования строки для foreach следует использовать массив.

Rob 10.09.2018 11:33

@mvasco Пожалуйста, примите правильный ответ, потому что он будет полезен другим пользователям в будущем.

Bhavin Solanki 10.09.2018 11:36

Перед зацикливанием вам нужно иметь массив. Вероятно, вы захотите взорваться строку:

$array = explode(',', $str);
foreach ($array as $value) {
 // code here...
}

потому что вы зацикливаете строковую переменную. Чтобы преобразовать строку в массив, вы можете использовать функцию разнесения.

foreach (explode(",", $str) as $value) {
    ...
}

http://php.net/manual/en/function.explode.phphttps://www.w3schools.com/php/func_string_explode.asp

Вы получите только строку из данных запроса, а не массив. Используйте разнесение, чтобы разделить данные, разделенные запятыми, в массив

$arr=explode(',',$str);

Затем вы можете пройти через это.

Другие вопросы по теме