проверка массив пустой или нет (php) - PullRequest
0 голосов
/ 07 апреля 2011

Я использую Cakephp и пытаюсь настроить результат paginator с помощью некоторых флажков. Я передавал параметры в 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://localhost/myproject2/browses/index/page:2"

и cakephp переводит URL в такой массив, как этот

Array
(
    [page] => 2

)

как просто проверить, доступен ли [b. ????] или нет? Я не могу использовать функцию! Empty (), потому что массив [page] уже в пути.

Ответы [ 3 ]

4 голосов
/ 07 апреля 2011

Если вы хотите проверить наличие определенного элемента, вы можете использовать:


Но если вы хотите проверить, есть ли хотя бы один элемент, ключ которого начинается с 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 голосов
/ 07 апреля 2011

Если страница всегда будет там, вы могли бы просто сделать подсчет.

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

Вы могли бы быть более конкретным, и проверить страницу есть, и счет один.

1 голос
/ 07 апреля 2011

Я думаю, это - это то, что вы ищете, функция isset, чтобы вы могли использовать ее как ...

        if(isset(Array[b.sonic]))
        {
        //Code here
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...