【发布时间】:2012-02-07 18:12:04
【问题描述】:
我有一个字符串,看起来像 1234#5678。现在我这样称呼:
$last = explode("#", "1234#5678")[1]
它不工作,有一些语法错误......但是在哪里?我期望的是$last 中的 5678。这在 PHP 中不起作用吗?
【问题讨论】:
-
您将能够在 PHP 5.4 中执行此操作(数组取消引用),而不是在当前 5.3 中
我有一个字符串,看起来像 1234#5678。现在我这样称呼:
$last = explode("#", "1234#5678")[1]
它不工作,有一些语法错误......但是在哪里?我期望的是$last 中的 5678。这在 PHP 中不起作用吗?
【问题讨论】:
在当前的 PHP 版本中不能取消数组引用(很遗憾)。但是你可以使用list [docs]直接将数组元素赋值给变量:
list($first, $last) = explode("#", "1234#5678");
更新
自 PHP 5.4(2012 年 3 月 1 日发布)以来,它支持 array dereferencing。
【讨论】:
list(,$last) = ....。这样你就不会在不需要时挂第一个变量了。
很可能 PHP 被语法弄糊涂了。只需将explode 的结果分配给数组变量,然后对其使用索引:
$arr = explode("#", "1234#5678");
$last = $arr[1];
【讨论】:
以下是如何将其简化为一行:
$last = current(array_slice(explode("#", "1234#5678"), indx,1));
indx 是您想要在数组中的索引,在您的示例中为 1。
【讨论】:
你不能这样做:
explode("#", "1234#5678")[1]
因为explode 是一个函数,而不是一个数组。当然,它会返回一个数组,但在 PHP 中,您不能将函数视为数组,除非它被设置为数组。
这是怎么做的:
$last = explode('#', '1234#5678');
$last = $last[1];
【讨论】:
PHP 可能有点暗淡。您可能需要在两行上执行此操作:
$a = explode("#", "1234#5678");
$last = $a[1];
【讨论】: