用于从特定索引/键处的返回数组中获取项的快捷方式


Shortcut for getting an item from a returned array at particular index/key?

我觉得有一些方法可以通过快捷方式实现这一点:

$date_array = explode("-", $date);
$day = $date_array[2];

类似于:

$day = explode("-", $date)[2];

基本上得到了答案并将其设置为某个值?

记不清了,但不是有一堆像.=串联这样的花哨的"="东西吗。还有其他类似的捷径吗?在谷歌上似乎找不到一篇包含所有快捷方式的文章。

当我真正想要的只是$day时,我讨厌不得不制作$date_array,这让我觉得我的代码效率不高。

编辑:把标题改得更通用了,想不出什么好的了。

正如PHP 5.4页面中的新功能所说,您建议的语法(称为函数数组去引用)现在可以在该版本中使用了。

$day = explode("-", $date)[2];

但是,在5.3或之前版本中,这将不起作用。

列出变量

list(,,$day) = explode("-", $date);

list()获取一个数组并将其解析为变量。。。你可以跳过你不想要的项目,把项目留空,就像我上面做的那样。应该做你需要做的事。您尝试的另一种类型的语法在php中不起作用(至少在我使用过的版本中是不起作用的)-这更像是一种JavaScript类型的表示法。

备选方案

如果你感兴趣,还有另一种解决方案可以解决你正在尝试的(除非这只是一个例子)

/// this will give you the current day based on server time
$day = date('d');
/// this will work from an existing Y-m-d date
$day = date('d', strtotime($date)); 

现在,将Y-m-d日期字符串转换为时间戳是否比拆分字符串并列出其变量更快——只有速度测试才能告诉(我认为拆分会获胜)。但对我来说,上面的内容更好,因为我忍不住想起了其他数组项目,这些项目被拆分出来,然后就被遗忘了;)

php5.4之后,您可以执行以下操作:

$day = explode("-", $date)[2];

在php5.4之前,您可以使用list

list(,,$day) = explode("-", $date);