2

array() を返すメソッドを呼び出して 1 行で実行し、この配列の値を直接取得することは可能ですか?

たとえば、次の代わりに:

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

このようなことをしてください:

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

この例は機能しません。構文エラーが発生します。

4

3 に答える 3

4

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

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

于 2012-04-17T11:18:12.813 に答える
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;
   }
}
?>

それが役に立てば幸い。

于 2012-04-17T11:34:39.670 に答える
1

言語自体は、配列に対してそれをサポートしていません。

getResponseInfo()戻り値を変更できる場合:

コンストラクターのパラメーターとして配列を持つ単純なクラスを作成できます。次に、インスタンス配列からキーをプルするだけの魔法のゲッターを定義します

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

そうすればできるようになります

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

私が書いたことは単なる提案です。実際の__getメソッドには、存在するかどうかを確認する必要があるため、

于 2012-04-17T11:37:11.487 に答える