【问题标题】:Optional parameters to PHP list functionPHP列表函数的可选参数
【发布时间】:2013-02-28 05:05:07
【问题描述】:

我的代码中有这样一行:

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

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

【问题讨论】:

  • list 不是函数。
  • “忽略”是指“不分配任何东西”还是“指派空”?
  • 你不应该想要这个。当您在范围内按名称定义变量时,应始终创建该变量。空变量应该怎么办?它们不应该被创建吗?这会弄乱下面的代码......
  • 我只希望它们为空。顺便说一句,PHP 社区比 Java 人回答这些问题要快得多!

标签: php arrays tuples


【解决方案1】:

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

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

问题解决了。

注意:如果您要加载任意以竖线分隔的数据,您可能希望使用str_getcsv() 函数而不是explode()

【讨论】:

【解决方案2】:
list($user_id, $name, $limit, $remaining, $reset)
    = array_pad(explode('|', $user), 5, null);

【讨论】:

    【解决方案3】:

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

    $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);
    

    【讨论】:

    • 正是我想要实现的。谢谢马克。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多