为什么当我在数组中分配它时变量不起作用?

Why Doesn't Variable Work When I Assign It In Array?

我需要在下面的代码中使用一个变量,但它不起作用,我不明白为什么。

工作代码;

$the_query = new WP_Query( array(
    'post__in' => array(
        16405,16362,16290,16434,16661
    ),
) );

无效的代码;

$featured_content_id = get_theme_mod( 'laura_featured_content_id' );
$the_query = new WP_Query( array(
'post__in' => array(
$featured_content_id
),
) );

当我使用 echo 和 var_dump() 查看 $featured_content_id 变量时,它似乎是正确的。这意味着结果是 16405、16362、16290、16434、16661,但它在数组中不起作用。如果我直接使用 $featured_content_id = '16405, 16362, 16290, 16434, 16661' 也不起作用。一定要写在数组里面吗?

假设$featured_content_id是一个字符串:

您可能想要 explode(',', $featured_content_id) 而不是 array($featured_content_id)。如果它必须是数字而不是字符串,您还需要 array_map('intval', ...) 围绕它。

这是因为您当前所做的将给您一个类似于 array('16405,16362,16290,16434,16661') 的数组,它是一个包含 一个 元素的数组,该元素是一个字符串。您真正想要的是将字符串(使用 , 作为分隔符)拆分为一个数组,每个部分有一个元素。

$the_query = new WP_Query( array(
    'post__in' => array_map('intval', explode(',', $featured_content_id)),
) );

假设$featured_content_id是一个数组:

如果它已经是一个数组,你只需要直接传递变量,而不用在array( ).

中包装它
$the_query = new WP_Query( array(
    'post__in' => $featured_content_id,
) );