直接从数组返回函数(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');