user447172
user447172

Reputation: 85

check is Array empty or not (php)

I am using Cakephp and try to customize the paginator result with some checkboxes .I was pass parameters in URL like this

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

and cakephp translate URL to be the array like this

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

other time when I pass params without checking any checkbox.

"http://localhost/myproject2/browses/index/page:2"

and cakephp translate URL to be the array like this

Array
(
    [page] => 2

)

how to simple check if [b.????] is available or not? I can't use !empty() function because array[page] is getting on the way.

Upvotes: 0

Views: 4645

Answers (3)

Pascal MARTIN
Pascal MARTIN

Reputation: 401182

If you want to check if a specific item is present, you can use either :


But if you want to check if there is at least one item which has a key that starts with b. you will not have much choice : you'll have to loop over the array, testing each key.

A possible solution could look like this :

$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.";
}


Another (possibly more fun, but not necessarily more efficient ^^ ) way would be to get the array of items which have a key that starts with b. and use count() on that array :

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

echo count($array_b);

Upvotes: 4

kamn
kamn

Reputation: 66

I think this is what you are looking for, the isset function so you would use it like...

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

Upvotes: 1

Jacob
Jacob

Reputation: 8344

If page is always going to be there, you could simply do a count.

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

You could be more specific and check page is there and the count is one.

Upvotes: 3

Related Questions