首页 > 解决方案 > 在函数上请求数组项

问题描述

如果我想从开始到第一个 (,) 提取一个字符串,这样做是安全的做法吗?

$day = explode(',',"Thursday, April 5th, 4:00pm")[0];

而不是做

$dayArray = explode(',',"Thursday, April 5th, 4:00pm");
$day = $dayArray[0];

我知道我也可以使用strposwith来做到这一点substr,而且我知道我可以使用 来做到这一点preg_match,我的问题是[0]直接从函数中请求一个孩子是否可靠。

标签: php

解决方案


引用自 php.net

如果 delimiter 是空字符串 (""),explode() 将返回 FALSE。如果 delimiter 包含 string 中不包含的值,并且使用了负限制,则返回一个空数组,否则返回一个包含 string 的数组。

这意味着:如果您需要绝对确定此代码有效,则应防止传递的空字符串爆炸或检查结果是否为假。否则,您可以尝试访问不存在的索引。

您是否考虑改用 DateTime::createFromFormat ?这是否有意义,取决于您的要求

短版本是否正常工作取决于您使用的 PHP 版本(如前所述)。


推荐阅读