我有这个:
list($firstname, $lastname) = explode(' ', $queryString);
Run Code Online (Sandbox Code Playgroud)
Sometiems $ lastname没有被定义,并且它在那里我得到未定义的偏移错误.
因为它无法找到任何东西放在$ lastname中,我猜.
爆炸后()我有:
if(!$lastname) { $lastname = $firstname; }
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如果没有定义$ lastname,我怎么能将它定义为$ firstname(如果你只写'Adam'而不是'Adam Thompson',应该定义lastname,这样'Adam Adam')
它现在为我做了这个,但我收到了偏移错误
Kin*_*nch 31
list($firstname, $lastname) = array_pad(explode(' ', $queryString, 2), 2, null);
Run Code Online (Sandbox Code Playgroud)
的2
在explode()
确保,有至多 2个值和array_pad()
保证,存在至少 2倍的值.如果没有空格字符,
$lastname
就是null
.这可以用来决定接下来会发生什么
$lastname = is_null($lastname) ? $firstname : $lastname;
Run Code Online (Sandbox Code Playgroud)
小更新:对于这个特定情况,你可以使用一个小技巧
list($firstname, $lastname) = array_pad(explode(' ', $queryString, 2), 2, $queryString);
Run Code Online (Sandbox Code Playgroud)
这将一步完成所有这些.它应该工作,因为
$firstname
)$queryString == $firstname
.现在是用于填充数组最多2个值的值(这正是一个值,因为我们已经有一个值)$queryString
,因为我们已经有2个值至少为了便于阅读,我更喜欢第一个更明显的解决方案.
归档时间: |
|
查看次数: |
12545 次 |
最近记录: |