我有一个数组$pieces[]
,它是一个爆炸的网址,我在其上执行一些取消设置,将其深入到第0位的一个值。我将$pieces[0]
的值存储在$category
中。我们假设这个值是字符串"page"
。
我将$category
传递给另一个包含函数各种参数的数组。在此数组中,如果我将"page"
作为字符串文字传递,它将按预期执行。如果我通过$category
,其中 应包含"page"
,那么它将无法按预期执行。我已经将第一个数组中的元素作为字符串转换,并检查类型确认$category
是一个字符串。
这是阵列创建和转换发生的地方:
$current = $_SERVER[REQUEST_URI];
$pieces = explode("/", $current);
foreach ($pieces as $key=>$piece) {
if ($piece == "some value" || is_numeric($piece) || $piece == "") {
unset($pieces[$key]);
}
}
$category = $pieces[0]; //this is "page"
echo gettype($category); //returns NULL
$category = (string)$category;
echo gettype($category); //returns string
然后我尝试在数组中使用变量无效:
$newQuery = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => 3,
'category_name' => $category,
'paged' => $paged,
));
我该怎么办?
答案 0 :(得分:2)
以下是发生的事情: 在你的foreach循环中,你取消设置空片[] ...如果未设置片段[0],那么在你的foreach循环之后$ pieces [0]不再存在,你的最终$ pieces数组完成像片[2 =>“foo “,5 =>”bar“]; 您不应该取消设置数组的值,而是创建一个内部具有良好值的新值:
$new_array = [];
foreach ($pieces as $piece) {
if ($piece != "some value" && !is_numeric($piece) && trim($piece) != "") {
$new_array[] = $piece;
}
}
$category = $new_array[0];
echo gettype($category); // I bet it works