11

我的代码中有这样一行:

list($user_id, $name, $limit, $remaining, $reset) = explode('|', $user);

最后 3 个参数可能存在也可能不存在。如果数组小于预期,是否有类似于 list 的函数会自动忽略这些最后的参数?

4

3 回答 3

45
list($user_id, $name, $limit, $remaining, $reset)
    = array_pad(explode('|', $user), 5, null);
于 2013-03-12T15:36:54.083 回答
16

如果您担心 SDC 的解决方案会让人觉得“hacky”;然后您可以设置一些默认值并使用:

$user = '3|username';

$defaults = array(NULL, NULL, 10, 5, FALSE);
list($user_id, $name, $limit, $remaining, $reset) = explode('|', $user) + $defaults;

var_dump($user_id, $name, $limit, $remaining, $reset);
于 2013-03-12T15:42:00.227 回答
5

只需在字符串的末尾添加一些备用管道:

list($user_id, $name, $limit, $remaining, $reset) = explode('|', $user.'||||');

问题解决了。

注意:如果您正在加载任意以管道分隔的数据,您可能希望使用str_getcsv()function 而不是explode().

于 2013-03-12T15:33:24.073 回答