2011-04-07 56 views
0

我使用CakePHP,并尝试与一些复选框来定制分页程序的结果。我在URL参数传递这样检查数组不是空(PHP)

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

和CakePHP翻译网址是数组像这样

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

其他时间当我通过参数没有检查任何复选框。

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

和CakePHP翻译网址是数组这样

Array 
(
    [page] => 2 

) 

如何简单的检查,如果[B。 ????]是否可用?我不能使用!empty()函数,因为array [page]正在开始。

回答

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); 
3

如果页面总是在那里,你可以简单地做一个计数。

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

您可能更具体,检查页面是否存在,计数是1。

1

我觉得this是你在找什么,在isset功能,因此会使用它就像...

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