Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.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_Arrays_Object - Fatal编程技术网

Php 迭代/对象数组时出错

Php 迭代/对象数组时出错,php,arrays,object,Php,Arrays,Object,早上好,我很困惑为什么每次我在迭代数组时试图使用“$x->split”时都会遇到一个未定义的错误 dd 问题是,当我在我的项目上迭代数组时,我使用的是这种格式。我是这样做的 @foreach($divs as $div) {{ $div['accountNam'] }} @foreach($div['items'] as $x) {{ $x->description }} {{ $x->date_at }} {{ $x->transactionType }} @en

早上好,我很困惑为什么每次我在迭代数组时试图使用“$x->split”时都会遇到一个未定义的错误

dd

问题是,当我在我的项目上迭代数组时,我使用的是这种格式。我是这样做的

@foreach($divs as $div)
 {{ $div['accountNam'] }}
 @foreach($div['items'] as $x)
 {{ $x->description }}
 {{ $x->date_at }}
 {{ $x->transactionType }}
 @endforeach
@endforeach
上面的代码运行良好,但当我添加第三个内部循环时

 @foreach($divs as $div)
  {{ $div['accountNam'] }}
  @foreach($div['items'] as $x)
    {{ $x->description }}
    {{ $x->date_at }}
    {{ $x->transactionType }}
       @foreach($x->split as $z)
        ----I get error here---
       @endforeach
  @endforeach
@endforeach
我收到以下错误:未定义的属性:stdClass::$split

当我尝试dd($z->拆分)时

我得到这个结果,这意味着它不是空的或者不存在

array(1) { [0]=> object(stdClass)#246 (1) { ["gt_xid"]=> int(1) } } 
你能帮我找到我丢失的东西吗。让它工作。我已经尝试使用$z['gt_xid'],但它给了我另一个错误:无法将stdClass类型的对象用作数组。。谢谢你花时间阅读这篇文章。祝你有愉快的一天

我相信数组的第二个元素(键1)没有“拆分”值。
在尝试循环之前,您应该测试是否定义了“拆分”(
isset($x->split)
)。

在数组中,
$div['items']
是一个没有
拆分属性的元素(索引1)

如果可能发生这种情况,你需要加以防范。我不知道您使用的语法,但它将遵循以下原则:

if (isset($x->split) :
  @foreach($x->split as $z)
    // do stuff
  @endforeach
endif;

为什么要用
@
在每个控件结构前面加上前缀?这特别告诉PHP忽略在那里生成的任何可能的错误和警告,从而使调试代码变得更加困难。摆脱它们,调试就会容易得多。我在这里使用刀片模板:)谢谢@cypherabe。。我没有马上意识到……)
if (isset($x->split) :
  @foreach($x->split as $z)
    // do stuff
  @endforeach
endif;