Прежде всего, я думаю, что было бы лучше, чтобы ваш код всегда читался.Таким образом, другие люди смогут лучше понять это.
Проблема здесь связана с именами ваших переменных.Вы перезаписываете значения, потому что вы используете одно и то же имя переменной для массива и значения.
Пример:
$category = ['a', 'b', 'c'];
var_dump($category); // array (3) { [0] => "a", [1] => "b", [2] => "c"}
foreach ($category as $category) { // array and value variable name are the same
echo $category; // This echos a, b and c
}
var_dump($category); // string (1) "c"
Как видно из цикла foreach
, $category
переменная имеет последнее значение вашего массива.
Простым исправлением будет переименование одной из переменных в foreach:
$categories = ['a', 'b', 'c']; // Different name (plural of category)
var_dump($categories); // array (3) { [0] => "a", [1] => "b", [2] => "c"}
foreach ($categories as $category) { // array and value variable name are different
echo $category; // This echos a, b and c
}
var_dump($categories); // array (3) { [0] => "a", [1] => "b", [2] => "c"}
На этот раз $categories
все еще имеет то же значение, что и раньшеforeach
и может быть снова зациклен.