I don't know of a direct way to do this that also preserves the convenience of
list($func, $field) = explode('|', $value);
However, since it's really a pity not to be able to do this, you may want to consider a sneaky indirect approach:
list($func, $field) = explode('|', $value.'|');
I have appended to $value
as many |
s as needed to make sure that explode
will produce at least 2 items in the array. For n
variables, add n-1
delimiter characters.
This way you won't get any errors, you keep the convenient list
assignment, and any values which did not exist in the input will be set to the empty string. For the majority of cases, the latter should not give you any problems so the above idea would work.