我有一个控制器文件,在这个页面中有两个功能。我在testtwo函数中需要testone功能。所以我在testtwo()中调用了testone(),但是出现了错误" Array to string conversion error
"
当我print_r($ title)时,结果列在页面上//数组([0] => Turbo [1] => Turboboost [2] => Monoboost)。
Customercontoller.php
public function testone($id)
{
$title = array();
$hardwares = Hardware::select('hardwares.title')
->join('vehicle_hardwares', 'hardwares.id', '=', 'vehicle_hardwares.hardware_id')
->where('vehicle_hardwares.vehicle_id', $id)
->where('hardwares.status', 'online')
->get();
foreach ($hardwares as $hardware){
$title[] = $hardware->title;
}
return $title;
//print_r($title); //Array ( [0] => Turbo [1] => Turboboost [2] => Monoboost )
}
protected function testtwo($customer_id)
{
$vehicleList ='';
$vehicle_id = 1;
$vehicleList .=' <p>Details: '.$this->testone($vehicle_id).'</p><br>'
return $vehicleList;
}
答案 0 :(得分:1)
您的testone
函数返回一个字符串数组,您需要在testtwo
函数中迭代该数组。
答案 1 :(得分:1)
此行返回数组
$this->testone($vehicle_id)
所以在连接期间
$vehicleList .=' <p>Details: '.$this->testone($vehicle_id).'</p><br>'
PHP内部尝试将数组转换为无法执行的字符串,因此最终会出现array to string conversion
错误。
如果您使用的是PHP7.0,则可以使用以下语法来解构PHP数组。
$vehicleList .=' <p>Details: '.$this->testone()[$vehicle_id].'</p><br>'
答案 2 :(得分:0)
$title
是数组不是字符串。你不能连接字符串与数组
您需要从testone
函数
$title = "";
foreach ($hardwares as $hardware) {
$title .= "<p>Details: " . $hardware->title . "</p><br>";
}
return $title;// return string
以testtwo
作为
$vehicleList .=$this->testone($vehicle_id);
return $vehicleList;
答案 3 :(得分:0)
这是一个数组
return $title;
你在这里用它作为字符串
$vehicleList .=' <p>Details: '.$this->testone($vehicle_id).'</p><br>'
这就是您遇到此错误的原因。您需要从testone()