我有这个:
list($firstname,$lastname) = explode(' ',$queryString);
Sometiems $lastname没有被定义,它在那里我得到未定义的偏移量错误.
因为它找不到任何东西放在$lastname,我想.
之后爆炸()我有:
if(!$lastname) { $lastname = $firstname; }
所以我的问题是如何定义$lastname如果$lastname没有被定义(如果你只写’Adam’而不是’Adam Thompson’,那么最后的名字应该被定义为’Adam Adam’)
它现在对我来说,但是我收到了偏移量错误
list($firstname,$lastname) = array_pad(explode(' ',$queryString,2),2,null);
在explode()中的2确保,最多有2个值,array_pad()确保至少有2个值.如果没有空格,$lastname为null.这可以用来决定下一步
$lastname = is_null($lastname) ? $firstname : $lastname;
小更新:对于这种具体情况,您可以使用一个小技巧
list($firstname,$queryString);
这将在一个步骤中做到这一切.它应该是工作,因为
>总是至少有一个值($firstname)
>如果有一个值,那么$queryString == $firstname.现在这是用来填充数组的值最多为2个值(正好是一个,因为我们已经有一个值)
>如果有两个值,那么数组没有填充$queryString,因为我们已经有2个值
至少对于可读性,我更喜欢第一个更明显的解决方案.