Php “拉威尔误差”;试图获取非对象的属性“;当处于if()条件内时

Php “拉威尔误差”;试图获取非对象的属性“;当处于if()条件内时,php,laravel,laravel-4,Php,Laravel,Laravel 4,奇怪的是,我可以在if语句之前访问属性,如果我将if条件更改为其他条件,我也可以访问if语句中的属性。但是尝试访问if条件内的属性会引发错误: $market_ids = []; $state->cities->each(function($city) use (&$market_ids) { dd($city->market->id); // <-Accessible here if (!in_array($city->m

奇怪的是,我可以在if语句之前访问属性,如果我将if条件更改为其他条件,我也可以访问if语句中的属性。但是尝试访问if条件内的属性会引发错误:

$market_ids = [];
$state->cities->each(function($city) use (&$market_ids)
{
      dd($city->market->id);  // <-Accessible here

      if (!in_array($city->market->id, $market_ids)){ // Error: Trying to get property of non-object

         dd($city->market->id); // Accessible here
         $market_ids[] = $city->market->id;

      }
});
$market_id=[];
$state->cities->每个功能($city)使用(&$market\u id)
{
dd($city->market->id);//market->id,$market_id)){//错误:试图获取非对象的属性
dd($city->market->id);//可在此访问
$market_id[]=$city->market->id;
}
});
错误:尝试获取非对象的属性

以前有人碰到过这个吗

正在尝试获取非对象的属性 在某些情况下,表示源
$city->market
不是对象,或选中此编辑:


我认为,您应该确保您的每个城市的关系不会返回空值:

$market_ids = [];
$state->cities->each(function($city) use (&$market_ids)
{

       if ($city->market === null) {
         echo " null market for ".$city->name."<br />";
         continue;
       } 


      if (!in_array($city->market->id, $market_ids)){ 

         $market_ids[] = $city->market->id;

      }
});

您可能也会遇到相同的错误。

您运行哪个PHP版本?如果它是对象,则超出条件。例如,我演示的第一个dd()。尝试在单独的var
$id
中获取
$city->market->id
,然后使用它,然后检查会发生什么情况谢谢!这正是问题所在。我的一个城市没有市场。
$market_ids = [];
$state->cities->each(function($city) use (&$market_ids)
{

       if ($city->market === null) {
         echo " null market for ".$city->name."<br />";
         continue;
       } 


      if (!in_array($city->market->id, $market_ids)){ 

         $market_ids[] = $city->market->id;

      }
});
$market_ids = [];
$state->cities->each(function($city) use (&$market_ids)
{
      echo $city->market->id; // not dd but simply echo
});