Php没有捕获下一个数组元素

Sku*_*ire 0 php laravel

我有这个数组:

array (
  'cfop' => '3',
  'cst' => NULL,
  'cstPis' => '2',
  'cstCofins' => '1',
)  
Run Code Online (Sandbox Code Playgroud)

这段代码:

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

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

    $t = next($taxes);
}
Run Code Online (Sandbox Code Playgroud)

ps:$taxes是数组

由于某种原因,next函数doenst不传递null值,因此日志只打印cfop.

如果我改变这样的顺序

array (
  'cfop' => '3',
  'cst' => '2',
  'cstPis' => NULL,
  'cstCofins' => '1',
) 
Run Code Online (Sandbox Code Playgroud)

日志将打印cfop,cst但在NULL后它不会达到下一个值

Chr*_*nce 5

null是一个虚假值,所以当你这样做时$t = current($taxes),它会评估为虚假的东西,这就是它停止执行的原因.

如果你想迭代每个值,我会建议使用foreach循环.

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

  • @SkullFire您可以使用Chris的示例中的`$ key`来访问密钥. (3认同)