我遇到以下错误:
警告 : array_map((: 参数 #2 应该是...
警告 : implode((:在 wp-include/class-wp-query.php 第 1918 行传递的参数无效
在我的 php 上,我从另一个页面收到一个 var,我确实:
$myId = $_POST['varPostId'];
$parts = explode(',', $myId);
然后我需要读取该值
query_posts(array(
'post__in' => $myId
));
但是我得到上述错误。
如果我这样做:
'post__in' => $parts
));
我得到一个空白页。
我尝试使用implode
$myId = $_POST['varPostId'];
$parts = implode(',', $myId);
并直接在查询中获取值
query_posts(array(
'post__in' => $_POST['varPostId']
));
$_POST['varPostId']
是单个值,类似于405
似乎您从POST
请求中获得的值只包含一个帖子 ID,该 ID 应该是 int,但可能是字符串。您需要执行一些类型和错误检查。希望像下面这样的东西可以工作。我看到query_posts
和post__in
,我假设WordPress在这里发挥作用?
// Put your ID into a variable and sanitize it
$myId = sanitize_key( $_POST['varPostId'] );
// Force it to an int (in case it's not from sanitize_key)
$myId = (int) $myId;
// Don't explode because it's not appropriate here
// $parts = explode( ',', $myId );
// Add the post id to the arguments as an array
query_posts(
array(
'post__in' => array( $myId )
)
);
为了跟进为什么explode
在这里不合适,它用于转换字符串,通常是这样的:
哦,你好,世界
放入包含多个项目的数组中,如下所示:
$asdf = array(
0 => 'oh',
1 => 'hello',
2 => 'world'
);
但是您似乎没有逗号分隔的帖子 ID 字符串,您只有一个,所以最好不要在这里使用。
如注释中所述,explode
获取一个字符串并将其拆分为项目数组。implode
反其道而行之。它需要一个数组并将其压缩成一个字符串。
因此,您可以拥有以下内容:
$myArray = array(
0 => 'hello',
1 => 'world'
);
// Convert to a string
$myString = implode( ', ', $myArray );
echo $myString; // prints: hello, world
// Convert back to an array
$myString = explode( ', ', $myArray );
var_dump( $myString ); // prints the array above