数组是否为空(php)

时间:2011-04-07 04:38:51

标签: php cakephp

我正在使用Cakephp并尝试使用一些复选框自定义分页器结果。我是这样的URL传递参数

"http://localhost/myproject2/browses/index/page:2/b.sonic:1/b.hayate:7/b.nouvo:2/b.others:-1/b.all:-2"

和cakephp将URL翻译为像这样的数组

Array
(
    [page] => 2
    [b.sonic] => 1
    [b.hayate] => 7
    [b.nouvo] => 2
    [b.others] => -1
    [b.all] => -2
)

其他时间我在没有勾选任何复选框的情况下传递参数。

“HTTP://本地主机/ myproject2 /浏览/索引/页:2”

和cakephp将URL翻译为像这样的数组

Array
(
    [page] => 2

)

如何简单检查[b。????]是否可用?我不能使用!empty()函数,因为数组[页面]正在上路。

3 个答案:

答案 0 :(得分:4)

如果要检查是否存在特定项目,可以使用以下任一项:


但是如果你想检查是否至少有一个项目的密钥以b.开头,你将没有多少选择:你必须遍历数组,测试每个密钥。

可能的解决方案可能如下所示:

$array = array(
    'page' => 'plop',
    'b.test' => 150, 
    'b.glop' => 'huhu', 
);

$found_item_b = false;
foreach (array_keys($array) as $key) {
    if (strpos($key, 'b.') === 0) {
        $found_item_b = true;
        break;
    }
}

if ($found_item_b) {
    echo "there is at least one b.";
}


另一个(可能更有趣,但不一定更有效^^)方式是获取具有以b开头的键的项目数组。并在该数组上使用count()

$array_b = array_filter(array_keys($array), function ($key) {
    if (strpos($key, 'b.') === 0) {
        return true;
    }
    return false;
});

echo count($array_b);

答案 1 :(得分:3)

如果页面总是在那里,你可以简单地计算一下。

if (count($params) == 1) {
    echo "There's stuff other than page!";
}

你可能更具体,检查页面就在那里,计数是一个。

答案 2 :(得分:1)

我认为this正是您所寻找的,isset功能,所以您可以像...一样使用它...

        if(isset(Array[b.sonic]))
        {
        //Code here
        }