Php 数组到字符串的转换

Php 数组到字符串的转换,php,laravel,Php,Laravel,这是我的密码: $menu .= $this->$item['type']($item); $item['type']是一个字符串-'single',它使用single()方法。但浏览器显示了以下错误: Array to string conversion 我不知道为什么,因为single返回一个字符串,$item['type']也是一个字符串。我甚至试着检查这个: var_dump($this->$item['type']([])); 它仍然返回相同的错误。你知道为什么吗?我

这是我的密码:

$menu .= $this->$item['type']($item);
$item['type']是一个字符串-'single',它使用single()方法。但浏览器显示了以下错误:

Array to string conversion
我不知道为什么,因为single返回一个字符串,$item['type']也是一个字符串。我甚至试着检查这个:

var_dump($this->$item['type']([]));

它仍然返回相同的错误。你知道为什么吗?

我相信这会管用的,试试吧:

$method = $item['type'];
var_dump($this->$method($item));

在将数组元素中找到的字符串用作对象的方法名之前,需要将其用花括号括起来:

$menu .= $this->{$item['type']}($item);

请参见此处:

您是否尝试过(字符串)($this->$item['type']($item));您是否尝试查看var_dump($this->$item['type']);它返回什么?seifeddine Besbes-这是同一个错误有一种解释,$item['type']是一个数组,也许数组包含您的字符串请尝试查看$item['type']返回的内容以确定这是问题所在,我尝试了多次,它总是返回字符串(6)“single”,我不知道为什么。想解释一下吗?是的,我们知道php支持变量函数,但只支持简单变量。它不支持数组作为变量函数。我只是好奇——它是否应该在早期版本的PHP中工作?我有一个运行PHP5.6的项目,当它停止工作时,我正在运行PHP5.0。老实说,我不知道。但再看一遍,我能理解为什么这里需要括号。如果没有它们,PHP(任何版本!)将不得不“认为”您想要访问对象属性
$this->$time
$type
-th元素下的函数(假设
$time
是字符串!)。花括号迫使PHP首先计算术语
$time[$type]