2012-04-17 5 views
2

array()を返し、直接この配列の値を取得するメソッドを呼び出すことは可能ですか?例えばメソッドによって返された配列の値を直接表示する

、代わりに:

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

この例では動作しません、私は構文エラーを取得:

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

はこのような何かを行います。

+0

"2つのメソッドを呼び出すことについてはわかりませんが、 $ var-> getResponse() - > getResponseInfo ..それらは理想的に離れていなければなりませんか? – Bono

+0

私は同じ質問をし、それはhttp://stackoverflow.com/questions/2396782/parse-error-on-explode-foo-bar0-for-instanceの複製として閉じられました:( –

答えて

1

あなたのできることは、あなたの関数に直接渡すことです。あなたの関数は、変数名が渡された場合はその変数の値を、そうでなければすべての変数値を持つ配列でなければなりません。

としてあなたはそれを行うことができます。

<?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; 
    } 
} 
?> 

はそれが役に立てば幸い:

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

あなたの機能。

4

> = PHP 5.4を使用している場合は、可能です。

それ以外の場合は、新しい変数を使用する必要があります。

1

言語自体は配列のものをサポートしていません。あなたは何getResponseInfo()リターン変更することができます場合は

をあなたは、コンストラクタのパラメータとして配列を持っているであろう、単純なクラスを作成することができます。それからちょうどインスタンスの配列

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

から鍵を引っ張っされますmagical getterを定義する次に、あなたは私が書いた何

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

は単なる提案で行うことができるでしょう。実際の__getメソッドが存在するかどうかを確認する必要があります

関連する問題