【问题标题】:One line code to get one value from function that returns an array [duplicate]从返回数组的函数中获取一个值的一行代码[重复]
【发布时间】:2018-08-04 19:05:17
【问题描述】:

可能重复:
Parse error on explode('-','foo-bar')[0] (for instance)

在 PHP 中有返回数组的函数,例如:

$a = parse_url("https://stackoverflow.com/q/9461027/87015");
echo $a["host"]; // stackoverflow.com

我的问题是如何将上述两个语句组合成一个语句。这(在 JavaScript 中有效,但无效):

echo parse_url("https://stackoverflow.com/q/9461027/87015")["host"];

注意:函数数组解引用自 PHP 5.4 起可用;上面的代码按原样工作。

【问题讨论】:

  • 检查 Ignacio 提供的链接。
  • 链接指向我已经知道的东西...... PHP 解析器不支持这种语法。我想知道是否有更好的方法来编写上述代码。

标签: php arrays syntax


【解决方案1】:

你可以做一个小技巧,写一个简单的函数

function readArr($array, $index) {
    return $array[$index];
}

那就这样用吧

echo readArr(parse_url("http://stackoverflow.com/questions/9458303/how-can-i-change-the-color-white-from-a-uiimage-to-transparent"),"host");

【讨论】:

  • 经过测试,有效。哈哈……
  • @LeviMorrison,可能是……但毕竟还是一个班轮。如果有帮助,我也不喜欢...
  • 你不喜欢它的事实应该表明它适得其反。
【解决方案2】:

老实说,编写上述代码的最佳方式是:

$a = parse_url("http://stackoverflow.com/q/9461027/87015");
echo $a["scheme"];
echo $a["host"];

这不是我最初发布的吗?

是的。根据上下文,您可能想要一个比$a(可能是$url)更好的名称,但这是最好的写法。添加一个函数并不是一个有吸引力的选择,因为当您重新访问您的代码或当有人阅读您的代码时,他们必须找到这个晦涩难懂的函数并弄清楚它究竟存在的原因。在这种情况下,保留为母语。

备用代码:

但是,您可以组合 echo 语句:

$a = parse_url("http://stackoverflow.com/q/9461027/87015");
echo $a['scheme'], $a['host'];

【讨论】:

  • 我认为这对 OP 没有任何帮助。和他问的一样。而另类不是他所要求的。
  • 他提供了两行代码作为他想要的“示例”。我的也是两条线。我当然认为让他知道他正在尝试做他不应该做的事情会有所帮助。
  • 即使在 PHP 中有办法做到这一点,也没有必要在同一个字符串上多次运行parse_url()。即使在 javascript 中,您也可能会使用变量。我能想象的唯一例外是,如果您确定只需要一次(例如,仅提取“主机”)。
猜你喜欢
  • 2019-09-06
  • 2018-10-07
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 2016-03-16
  • 1970-01-01
  • 1970-01-01
  • 2018-08-09
相关资源
最近更新 更多