Posted by Paul Lautman on 01/09/07 13:14
J.O. Aho wrote:
> Paul Lautman wrote:
>> I have the following switch statement:
>>
>> switch ($record->sub_page) {
>> case -1:
>> $this->page = 6;
>> $error_message = '<center>You appear to have already completed
>> the form.</center>';
>> break;
>> case 0:
>> $this->page = 5;
>> ff_query("UPDATE #__gateway_form_1 SET `sub_page`=-1 WHERE
>> userid=$my->id and `expiry_date` = '$expiry_date'");
>> break;
>> default:
>> do something else
>> }
>>
>> The value of $record->sub_page can be NULL. If it is NULL, the case
>> for 0 seems to fire. I really need the default action to happen when
>> $record->sub_page is NULL or a +ve value.
>>
>> However if I do:
>>
>> switch ($record->sub_page) {
>> case -1:
>> $this->page = 6;
>> break;
>> case NULL:
>> do something else;
>> break;
>> case 0:
>> $this->page = 5;
>> break;
>> default:
>> do something else;
>> }
>>
>> then the switch manages to tell the difference between a NULL and a
>> zero. Is it correct that php treats NULL as 0?
>> Can anyone suggest a good fix?
>
> NULL and 0 are many times treated as false, so you do need to take
> care of things and check NULL/0/false.
But I need the default action to happen if $record->sub_page is NULL.
If I test for NULL before testing for 0 then all is detected fine. However
if I test for NULL after testing for 0 then it fires the 0 action when it
sees NULL. I don't really want to copy the default actions to the NULL
actions too.
[Back to original message]
|