4

我觉得有一些捷径可以做到这一点:

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

就像是:

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

基本上得到答案并将其设置为某种东西?

不记得了,但不是有一堆花哨的“=”之类的东西.=连接。还有其他类似的捷径吗?似乎无法在 Google 上找到包含所有快捷方式的文章。

我讨厌不得不做一个$date_array当我真正想要的是$day,让我觉得我的代码效率不高。

编辑:将标题更改为更通用,想不出什么好东西。

4

3 回答 3

5

列出变量

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

现在,将 Ymd 日期字符串转换为时间戳是否比拆分字符串并列出它的 vars 更快 - 只有速度测试会告诉我们(我认为拆分会赢)。但对我来说,上面的内容更好,因为我不禁想到其他数组项被拆分出来然后就被遗忘了;)

于 2012-09-12T09:28:23.660 回答
5

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

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

但是,这在 5.3 或更早版本中不起作用。

于 2012-09-12T09:30:26.467 回答
0

在 php5.4 之后你可以这样做:

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

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

list(,,$day) = explode("-", $date);
于 2012-09-12T09:31:56.993 回答