2011-03-07 130 views
0

我有一個填充多維數組PHP函數 - >陣列

$client->getResponse() 

我想直接利用該數組,像這樣一個PHP函數:

echo '$client->getResponse()[0]';這顯然是行不通的。

我不希望有這樣做

$arr = array($client->getResponse());爲陣,我真的不希望的另一個層面帶來的。

+0

不幸的是,這在PHP中是不可能的。唯一的選擇是方法鏈接(自PHP 5起可用) – 2011-03-07 13:13:30

+0

可能的重複[在函數調用訪問數組元素在PHP中](http://stackoverflow.com/questions/2282051/access-array-element-from-function-call -in-php) – Gordon 2011-03-08 09:36:23

回答

3
$arr = $client->getResponse(); 
echo $arr[0]; 

應該就足夠了。

可以約引入TMP什麼用foreach

foreach($client->getResponse() as $clientResponse){ 
    echo $clientResponse; 
} 
+0

不是他要求的,儘管 – 2011-03-07 13:13:45

+0

@Pekka:我不明白它是如何回答它的......它不會帶來另一個數組級別*,並且可以直接使用*。因此,如果他能夠訪問他的課程,他可以做一個鏈接:'echo $ client-> getResponse() - > get(1);'例如。 – Shikiryu 2011-03-07 13:21:16

+0

我稱之爲最佳迴應,因爲它是。按預期工作。 – jaxxstorm 2011-03-07 13:36:12

1

顯示數組內的每個項目?

$tmp = $client->getResponse(); 
echo $tmp[0]; 
+0

這就是他所說的他不想做的事 – 2011-03-07 13:14:48

+0

那麼現在就做,謝謝 – jaxxstorm 2011-03-07 13:26:25

+0

等一下:「$ arr = array($ client-> getResponse());因爲這會帶來另一個級別我真的不想要。「這裏唯一的問題是數組函數。 – 2011-03-07 14:38:24

0

注意,如果你使用:

foreach($client->getResponse() ...) 

函數「」 GETRESPONSE'將在每個迭代執行...如果在「每個」過程中的數據變化,你可能有不連貫的價值觀。不是?

+0

不正確。該方法只會被調用一次。 – 2011-03-07 13:14:13

+0

不,該函數執行一次,初始化時 – 2011-03-07 13:14:28

+0

Mhh,的確,確實!我混淆了「for()」... – Akarun 2011-03-07 14:41:18

0

您不能爲$ client表示的類創建另一種方法嗎?也許 「GetResponseEntry($ ID)」,像這樣:

function getResponseEntry($id, $default = null) 
{ 
    static $response = null; 

    if($response === null) 
     $response = $this->getResponse(); 

    if(isset($response[$id])) 
     return $response[$id]; 
    else 
     return $default; 
} 

然後,你可以把它像這樣:

echo $client->getResponseEntry(0); 

它可能不是適合所有的情況,但是......也許,只是也許,它會在這裏工作。