Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
直接从数组返回函数(php)引用数组元素_Php_Arrays - Fatal编程技术网

直接从数组返回函数(php)引用数组元素

直接从数组返回函数(php)引用数组元素,php,arrays,Php,Arrays,特别是片段: return array( 'client_id' => $client[0]->getId(), 'client secret' => $client[0]->getSecret(), 'redirect_uri' => ($client[0]->GetClientEndpoints())[0]->getRedirectUri(), 'name' => $client[0]->getNam

特别是片段:

return array(
    'client_id' => $client[0]->getId(),
    'client secret' =>  $client[0]->getSecret(),
    'redirect_uri' =>  ($client[0]->GetClientEndpoints())[0]->getRedirectUri(),
    'name' =>  $client[0]->getName());
有没有一种方法可以让我不必这样做:

($client[0]->GetClientEndpoints())[0]->getRedirectUri()

$client[0]->GetClientEndpoints()[0]->getRedirectUri()
应该在PHP5.4中工作。还没有5.4吗?你需要更新

但它非常难看,可读性不强。我想:

 $endpoints = $client[0]->GetClientEndpoints();
 return array(
    'client_id' => $client[0]->getId(),
    'client secret' =>  $client[0]->getSecret(),
    'redirect_uri' =>  $endpoints[0]->getRedirectUri(),
    'name' =>  $client[0]->getName());

我不确定它是否有效,但也许你可以试试

至少此代码段可以正常工作,没有任何错误:

return array(
    'client_id' => $client[0]->getId(),
    'client secret' =>  $client[0]->getSecret(),
    'redirect_uri' =>  array_shift($client[0]->GetClientEndpoints())->getRedirectUri(),
    'name' =>  $client[0]->getName());

这个语法是在PHP5.4中添加的(我相信它是5.4)。因此,使用PHP>=5.4。
array\u shift
期望的是一个引用(使用
&
,您知道),而不是函数结果。这将产生一个警告或通知。嗯,如上所述,我将错误报告=E_ALL and nothing与上面的示例一起使用哦,对不起,我的错,它与作者的问题不完全相同。是的,它对这个,sorryNice测试用例抛出E_严格要求!这很严格。对于完美主义者来说,这就是我使用的,我有时会忘记可读性的重要性
return array(
    'client_id' => $client[0]->getId(),
    'client secret' =>  $client[0]->getSecret(),
    'redirect_uri' =>  array_shift($client[0]->GetClientEndpoints())->getRedirectUri(),
    'name' =>  $client[0]->getName());
<?php
error_reporting(E_ALL);

class class1{
    public function getRedirectUri()
    {
        return 'something';
    }
}

$arr1 = array(new class1(), new class1());

$arr = array(
    'client_id' => 'something',
    'client secret' =>  'something',
    'redirect_uri' =>  array_shift($arr1)->getRedirectUri(),
    'name' =>  'something');
<?php
error_reporting(E_ALL);

class class2{
    public function getRedirectUri()
    {
        return 'something';
    }
}

class class1 {
    public function getArrays() {
        return array(new class2(), new class2());
    }
}
$var = new class1 ();

$arr = array(
    'client_id' => 'something',
    'client secret' =>  'something',
    'redirect_uri' =>  array_shift($var->getArrays())->getRedirectUri(),
    'name' =>  'something');