2

是否可以在一行中调用返回 array() 的方法并直接获取该数组的值?

例如,而不是:

$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()返回的内容:

您可以创建简单的类,它将数组作为构造函数参数。然后定义神奇的getter,它将只是从实例数组中提取键

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 回答