2011-04-07 60 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 
     }