Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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_Laravel_Controller - Fatal编程技术网

Php 未定义的变量,即使我已经传递了它

Php 未定义的变量,即使我已经传递了它,php,laravel,controller,Php,Laravel,Controller,我得到一个未定义的变量错误。这是我的控制器: public function index() { /**$englishgrades = StudentHistory::select('date', 'student_id', 'grade') ->where('subject', 'English') ->groupBy('student_id') ->orderBy('date','desc') ->first() -

我得到一个未定义的变量错误。这是我的控制器:

public function index()
{

    /**$englishgrades = StudentHistory::select('date', 'student_id', 'grade')
    ->where('subject', 'English')
    ->groupBy('student_id')
    ->orderBy('date','desc')
    ->first()
    ->get();        
    */  

    $englishgrades = StudentHistory::where('subject', 'English')
    ->get();        

    $englishgrades = [];

    return view('home', $englishgrades);
}
控制器:

public function index()
{

    /**$englishgrades = StudentHistory::select('date', 'student_id', 'grade')
    ->where('subject', 'English')
    ->groupBy('student_id')
    ->orderBy('date','desc')
    ->first()
    ->get();        
    */  

    $englishgrades = StudentHistory::where('subject', 'English')
    ->get();        

    $englishgrades = [];

    return view('home', $englishgrades);
}
我在用我的刀锋召唤它

{{ $englishgrades }}
未定义变量:englishgrades(视图:/home/vagrant/Code/projects/DYK/resources/views/home.blade.php)

你应该使用紧凑型

$englishgrades = StudentHistory::where('subject', 'English')
->get();
$englishgrades = []; // remove this so it will not overwrite the above declaration ..
return view('home', compact('englishgrades'));
它将返回一个空数组,因为您正在覆盖原始值

删除你的

$englishgrades = []; 

在上面的代码中,第二个参数需要是数组键作为变量名,值作为变量或值

您可以手工编写或使用压缩函数生成键值对的数组()

  return view('home',compact('englishgrades'));
现在,您可以在视图中访问
$englishgrades

或者你可以用like

   $data = compact('englishgrades'); or 
   $data = ['englishgrades'=>$englishgrades];
   return view('home',$data);
这里的主要内容是您使用键作为变量 例:


因此,在视图中,您必须使用$englishgrades=[]覆盖的$grades

;我删除了它,但它仍然在说未定义的变量删除你的
$englishgrades=[]
返回视图('home',['englishgrades'=>$englishgrades])我正在删除我的答案:)@sumit我很抱歉。谢谢你,兄弟。关于“Demonyowh”这个简洁的答案,哪个合适呢?@RodneyZanoria两个兄弟都可以。同样的目的是将对象JSON返回到刀片视图。这很有效,谢谢!你能给我一个参考吗?我在哪里能读到有关“compact”的内容?compact与声明一个数组的作用相同,数组的键是字符串,值是eval(“$”。“stringinput”);把它放在一个数组中,但在这里:。。我希望这会有帮助。。
  return view('home',compact('englishgrades'));
   $data = compact('englishgrades'); or 
   $data = ['englishgrades'=>$englishgrades];
   return view('home',$data);
 $data = ['grades'=>$englishgrades];
   return view('home',$data);