У меня есть такой массив:
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
Есть ли причина не использовать здесь просто цикл foreach?
У нас может не быть вашего полного кода, но этот фрагмент кода можно было бы значительно упростить с помощью простого цикла foreach.






null - это ложное значение, поэтому, когда вы выполняете $t = current($taxes), оно оценивается как ложное, поэтому оно перестает выполняться.
Если вы хотите перебирать каждое значение, я бы посоветовал вместо этого использовать цикл foreach.
foreach ($taxes as $key => $value) {
Log::debug($key);
// $this->saveTaxes($key, $value, $add);
}
а если я хочу взять имя ключа?
@SkullFire Вы можете получить доступ к ключу, используя $key из примера Криса.
Потому что
NULLсчитаетсяfalsy, и ваши итерации прекращаются.