2012-02-27 110 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