数组php上的foreach数组

Posted

技术标签:

【中文标题】数组php上的foreach数组【英文标题】:Foreach array on array php 【发布时间】:2018-09-11 07:09:05 【问题描述】:

我正在尝试foreach 我的数组但无法正常工作

这是我的控制器

    $start    = (new DateTime("2016-11-01"))->modify('first day of this month');
    $end      = (new DateTime("2017-02-01"))->modify('first day of next month');
    $interval = DateInterval::createFromDateString('1 month');
    $period   = new DatePeriod($start, $interval, $end);
    $result = array();

    foreach ($period as $dt) 
        $data_month = array(
            'month' => $dt->format("n"),
            'year'  => $dt->format("Y")
        );
        array_push($result, $data_month);
    

这是我的刀

@foreach($result as $row => $innerArray)
   @foreach($innerArray as $innerRow => $value)
   <td>$value->month</td>
   <td>$value->year</td>
   @endforeach
@endforeach

结果:

试图获取非对象的属性

但如果我这样尝试,只有数组 ('month') 上的第一个值在循环

@foreach($result as $row => $innerArray)
   @foreach($innerArray as $innerRow => $value)
   <td>$value</td>
   @endforeach
@endforeach

结果:

仅循环月份

【问题讨论】:

不工作不是清理东西。让我们知道您到底面临什么错误? 我建议在使用日期时间时研究 Carbon。更干净更有趣。 你应该了解 php 对象和 PHp 数组的区别,Trying to get property of non-object 通常发生在你访问具有对象样式的数组时 【参考方案1】:

试试这个:

@foreach($result as $value)
   <td> $value['month'] </td>
   <td> $value['year'] </td>
@endforeach

因为数组的结构如下:

Array
(
    [0] => Array
        (
            [month] => 11
            [year] => 2016
        )

    [1] => Array
        (
            [month] => 12
            [year] => 2016
        )

    [2] => Array
        (
            [month] => 1
            [year] => 2017
        )

    [3] => Array
        (
            [month] => 2
            [year] => 2017
        )

)

【讨论】:

【参考方案2】:

控制器逻辑

    $start    = (new DateTime("2016-11-01"))->modify('first day of this month');
    $end      = (new DateTime("2017-02-01"))->modify('first day of next month');
    $interval = DateInterval::createFromDateString('1 month');
    $period   = new DatePeriod($start, $interval, $end);
    $result = array();

    foreach ($period as $dt) 
        $result[] = array(
            'month' => $dt->format("n"),
            'year'  => $dt->format("Y")
        );
    

刀片文件

@foreach($result as $row => $data) 
    <td>$data['month']</td>
    <td>$data['year']</td>
@endforeach

【讨论】:

【参考方案3】:

试试这个

@foreach($result as $result1)
   $result1['month'] 
@endforeach

【讨论】:

以上是关于数组php上的foreach数组的主要内容,如果未能解决你的问题,请参考以下文章

php foreach 修改数组不生效?

php foreach数组问题

PHP 数组遍历方法大全(foreach,list,each)

php foreach输出数组只输出元素的第一个字符

PHP运用foreach神奇的转换数组(实例讲解)

PHP中使用foreach循环读取数组数据的方法