views:

144

answers:

4

My PL/SQL procedure returns a cursor. It always returns data. I fetch (oci_fetch_assoc) it and save it in an array. If results were found the keys of the array will be strings. If the cursor didn't find data, it will return value 0, thus the key of the array will be numeric.

while($data = oci_fetch_assoc($cursor)){
    if(!isset($data[0])){
       ...
    }
...
...
}

What's the best way to check that the array is not just 0, but contains data?

Thanks

A: 
if(!empty($data[0])) { ... }
hsz
sorry...my procedure always returns a cursor. When I open my first cursor I collect data. After this I check if any rows were found. If there aren't any, I'll open the cursor with a different Select statement, which always returns 0.So, in PHP I will always get an array with value in it. The goal of my condition is to find out if the array has not just 0 as a value $array[0] = 0).
Kel
A: 

You can use the '===' to see if $data[0] equals 0. Like:

if($data[0]===0) {
   // It really is the number 0
}
zaf
sorry...my procedure always returns a cursor. When I open my first cursor I collect data. After this I check if any rows were found. If there aren't any, I'll open the cursor with a different Select statement, which always returns 0.So, in PHP I will always get an array with value in it. The goal of my condition is to find out if the array has not just 0 as a value $array[0] = 0).
Kel
OK. Updated my answer.
zaf
+1  A: 

Here is my solution:

if($data != array(0 => "0")){

and it works

Kel
A: 

oci_fetch_assoc returns an associated array, that is the column names are indexes in the array.

try one of these:

($data['firstColumn'] === 0)
(reset($data) === 0)

where 'firstColumn' is the actual name of the first column

OIS