2012-04-17 52 views
2

是否可以在一行中調用返回數組()並直接獲取此數組的值的方法?直接顯示由方法返回的數組的值

例如,而不是:

$response = $var->getResponse()->getResponseInfo(); 
$http_code = $response['http_code']; 
echo $http_code; 

做這樣的事情:

echo $var->getResponse()->getResponseInfo()['http_code']; 

這個例子不工作,我得到一個語法錯誤。

+0

應該是好的,雖然我不知道調用「兩個」方法; $ var-> getResponse() - > getResponseInfo ..不應該那些理想地分開? – Bono 2012-04-17 11:18:49

+0

我問了同樣的問題,它被關閉爲http://stackoverflow.com/questions/2396782/parse-error-on-explode-foo-bar0-for-instance :( – 2012-04-17 11:27:40

回答

1

你可以做的是直接傳遞給你的函數。你的函數應該是這樣的,如果一個變量名被傳遞給它,它應該是該變量的值,否則是一個包含所有變量值的數組。

你可以做到這一點是:

<?php 
// pass your variable to the function getResponseInfo, for which you want the value. 
echo $var->getResponse()->getResponseInfo('http_code'); 
?> 

您的功能:

<?php 
// by default, it returns an array of all variables. If a variable name is passed, it returns just that value. 
function getResponseInfo($var=null) { 
    // create your array as usual. let's assume it's $result 
    /* 
     $result = array('http_code'=>200,'http_status'=>'ok','content_length'=>1589); 
    */ 

    if(isset($var) && array_key_exists($var, $result)) { 
     return $result[ $var ]; 
    } else { 
     return $result; 
    } 
} 
?> 

希望它能幫助。

4

如果您使用> = PHP 5.4,您可以。

否則,您將需要使用新變量。

1

語言本身不支持數組。

如果你可以改變什麼getResponseInfo()返回:

您可以創建簡單的類,這將有數組作爲構造函數的參數。然後定義magical getter將從實例陣列

function __get($key) 
{ 
    return @content[$key] 
} 

只是拉鍵然後你就可以做

echo $var->getResponse()->getResponseInfo()->http_code; 
// or 
echo $var->getResponse()->getResponseInfo()->$keyWhichIWant; 

我寫的僅僅是建議。真正__get方法應該有一些檢查,如果存在等等