直接显示方法返回的数组的值

时间:2012-04-17 11:16:14

标签: php oop

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

例如,而不是:

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

做这样的事情:

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

此示例不起作用,我收到语法错误。

3 个答案:

答案 0 :(得分:4)

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

否则,您需要使用新变量。

答案 1 :(得分: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;
   }
}
?>

希望它有所帮助。

答案 2 :(得分:1)

语言本身不支持数组。

如果您可以更改getResponseInfo()返回的内容:

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

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

然后你就可以了

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

我写的只是提案。真正的__get方法应该检查一下是否存在