Php не ловит следующий элемент массива

У меня есть такой массив:

array (
  'cfop' => '3',
  'cst' => NULL,
  'cstPis' => '2',
  'cstCofins' => '1',
)  

И этот код:

while ($t = current($taxes))
{
    $getkey = key($taxes);
    Log::debug($getkey);

    //$this->saveTaxes($getkey, $t, $add);

    $t = next($taxes);
}

ps: $taxes - это массив

По какой-то причине функция next не передает нулевое значение, поэтому в журнале печатается только cfop.

Если я изменю такой порядок

array (
  'cfop' => '3',
  'cst' => '2',
  'cstPis' => NULL,
  'cstCofins' => '1',
) 

Журналы будут печатать cfop и cst, но не достигнет следующего значения после NULL

Потому что NULL считается falsy, и ваши итерации прекращаются.

u_mulder 19.11.2018 16:24

Есть ли причина не использовать здесь просто цикл foreach?

iainn 19.11.2018 16:25

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

milo526 19.11.2018 16:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
49
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

null - это ложное значение, поэтому, когда вы выполняете $t = current($taxes), оно оценивается как ложное, поэтому оно перестает выполняться.

Если вы хотите перебирать каждое значение, я бы посоветовал вместо этого использовать цикл foreach.

foreach ($taxes as $key => $value) {
  Log::debug($key);
  // $this->saveTaxes($key, $value, $add);
}

а если я хочу взять имя ключа?

SkullFire 19.11.2018 16:28

@SkullFire Вы можете получить доступ к ключу, используя $key из примера Криса.

Dirk Scholten 19.11.2018 16:29

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