2012-02-27 113 views
2

可能重复获得一个值:
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"]; 
+0

检查Ignacio提供的链接。 – 2012-02-27 06:50:40

+1

链接指向我已经知道的东西...... PHP解析器不支持这种语法。我想知道是否有更好的方式来编写上面的代码。 – 2012-02-27 06:55:00

回答

2

你可以做一个小动作,而不是,写一个简单的函数

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"); 
+0

经过测试,**它有效**。哈哈.... – Starx 2012-02-27 06:52:42

+2

这是适得其反的。 – 2012-02-27 07:04:01

+0

@LeviMorrison,可能......但毕竟还是一班人。如果有帮助,我也不喜欢它... – Starx 2012-02-27 07:08:12

1

老实说,写你上面的代码的最佳方式是:

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

这不就是我最初发布?

是的。根据上下文,您可能需要一个比$a(可能是$url)更好的名称,但这是编写它的最佳方式。添加一个函数并不是一个有吸引力的选择,因为当你重新访问你的代码或者当有人读你的代码时,他们必须找到隐藏的函数并找出它存在的原因。在这种情况下,请使用母语。

替代代码:

你可以,但是,结合回声声明:

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

我不认为这会以任何方式帮助OP。与他的要求相同。而选择不是他所要求的。 – Starx 2012-02-27 07:07:07

+0

他提供了两行代码,是他想要的“示例”。我的也是两条线。我当然认为让他知道他试图做一些他不应该做的事情会有帮助。 – 2012-02-27 07:11:51

+0

即使有一种方法可以在PHP中执行此操作,也不需要在同一个字符串上多次运行'parse_url()'。即使在JavaScript中,你可能会使用一个变量。我能想象的唯一例外是,如果你确定只需要它一次(例如只提取'主机')。 – 2012-02-27 07:26:32