PHP列表函数的可选参数

Mik*_*keG 7 php arrays tuples

我的代码中有这样的一行:

list($user_id, $name, $limit, $remaining, $reset) = explode('|', $user);
Run Code Online (Sandbox Code Playgroud)

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

dec*_*eze 33

list($user_id, $name, $limit, $remaining, $reset)
    = array_pad(explode('|', $user), 5, null);
Run Code Online (Sandbox Code Playgroud)


Mar*_*ker 11

如果你担心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);
Run Code Online (Sandbox Code Playgroud)


SDC*_*SDC 6

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

list($user_id, $name, $limit, $remaining, $reset) = explode('|', $user.'||||');
Run Code Online (Sandbox Code Playgroud)

问题解决了.

注意:如果要加载任意管道分隔数据,则可能需要使用str_getcsv()函数而不是explode().

  • http://stackoverflow.com/a/15365504/851643 似乎是一个更好的解决方案 (3认同)