字符串类型的数组项与相同值的字符串文字不相同?

时间:2018-05-31 19:19:18

标签: php arrays wordpress

我有一个数组$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,
));

我该怎么办?

1 个答案:

答案 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