在循环中使用 end() 返回空值,但数组打印正确


Using end() inside loop returns null but arrays print correctly?

>我在while循环中具有以下代码,它从WordPress中的自定义字段中获取一个json数组,将其转换为正确打印的php数组。我看到每个数组都打印在 AJAX 响应中。

如果每个数组都打印正确,这意味着$testmeta每个循环都存储一个数组,为什么$position = end($testmeta);返回此错误Warning: end() expects parameter 1 to be array, null given

if ( $posts->have_posts() ) {
    while ( $posts->have_posts() ) {
    $results_array = get_post_meta($thepostid, 'results',true);
    $testmeta = json_decode($results_array,true);
    print_r($testmeta);
    $position = end($testmeta);
    }
}

我尝试将unset($testmeta)放在代码下方,但没有帮助。

我还尝试了print_r(end($testmeta));打印每个数组的末尾但仍然抛出错误

可能是$testmeta是空的(有时是循环),所以在分配之前测试它:

if (!empty($testmeta)) $position = end($testmeta);