2016-07-19 57 views
-1

我有一個控制器文件,在這個頁面中有兩個函數。我需要testtwo函數中的testone功能。所以我叫內testtwo的testone()(),但得到一個錯誤 「Array to string conversion error如何調用foreach導致另一個函數?

當我的print_r($標題),結果被列出ONT的頁面//陣列([0] =>渦輪[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; 
} 
+1

'$ this-> testone($ vehicle_id)'返回'$ title'這是一個數組! –

回答

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; 
+0

非常感謝你,我明白了。 –

+0

您好! – Saty

1

testone函數返回一個字符串數組,你需要遍歷數組中的testtwo功能。

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>' 
0

這是一個數組

return $title; 

而你正在使用它作爲一個字符串這裏

$vehicleList .=' <p>Details: '.$this->testone($vehicle_id).'</p><br>' 

這就是爲什麼你有這個錯誤。你需要返回字符串testone()