2017-01-20 8 views
3

Я пытаюсь сделать цикл foreach для итерации по каждому элементу в массиве, но он захватывает только последний элемент и не перебирает первый элемент. Я разделил код, чтобы показывать только соответствующие части, и добавил некоторые команды, чтобы идентифицировать проблему, как описано выше.Перед тем, как показывать последний элемент в массиве

$message == "kk,ll"; 
$myArray = explode(',', $message); 

print_r ($myArray); 

foreach ($myArray as $value); 
{ 
    echo "$value <br>"; 
    $array[] = $value; 
} 

print_r ($array); 

Выход:

Array ([0] => kk [1] => ll) ll 
Array ([0] => ll) 

Вы можете видеть, что, когда я использую print_r() массив содержит два элемента. Но цикл foreach только петли над последним элементом. Добавление элементов массива в новый массив внутри цикла также заканчивается массивом, содержащим только последний элемент. Что я делаю не так?

+3

'Еогеасп ($ туАггау в $ значение);' <- Одна вещь, то здесь не так. Подумайте о линии и о том, что она делает. В противном случае вы попытались выяснить, что происходит! Это просто скрытая опечатка;) – Rizier123

+1

';' в конце круглых скобок foreach не нужно –

ответ

5

У вас есть две ошибки в вас код:

  1. В Вашей первой линии у вас есть две одинаковые знаки, которые должны быть только один.

  2. В вашем цикле Еогеасп, вы по ошибке положили точку с запятой в конце:

foreach ($myArray as $value);

Делая это, цикл Еогеасп будет работать, но код внутри {} на самом деле помещенный вне цикла foreach, и тем самым вызывает $value только для хранения последнего элемента массива.

Код должен выглядеть следующим образом:

$message = "kk,ll"; 
$myArray = explode(',', $message); 
print_r ($myArray); 
foreach ($myArray as $value) { 
    echo "$value <br>"; 
    $array[] = $value; 
} 
print_r ($array); 
+0

@CoreyHart этот ответ отчасти ошибочен, foreach ($ myArray как $ value); будет цикл массива! И результат $ value получает последний элемент этого массива. –

1

удалить ; после Foreach как в коде последующих

foreach ($myArray as $value) 

{ 
echo "$value <br>"; 
$array[] = $value; 
} 
+0

Объясните «почему» OP должен удалить ';' после заголовка foreach и что он делает, когда OP там есть. – Rizier123

+0

это просто необязательно и как в 'if (условиях) {инструкциях}' no ';' необходимо между заголовком оператора и парой круглых скобок, по крайней мере для более качественных структурированных кодов –

1

ваш Еогеасп просто присваивается значение $, но выход ничего. Это вызвано: после того, как Еогеасп, такой же, как

foreach ($myArray as $value) 
{} 

И после этого, $ значение имеют последний элемент $ туАггау, то

{ 
    echo "$value <br>"; 
    $array[] = $value; 
} 

только выход последнего элемента.

0

In Laravel Framework Use Code into Controller: 
 

 
    $dd = $categories->pluck('title')->toArray(); 
 
    
 
    foreach ($dd as $key => $value) {<br /> 
 
     $array[$key] = '.' . $value;<br /> 
 
    } <br /> 
 
    
 
    $cat = implode(',' , $array); 
 
    <br /> 
 
    
 
// Result Display : James,Mark,Helmet.....