【问题标题】:Foreach array on array php数组php上的foreach数组
【发布时间】: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 通常发生在你访问具有对象样式的数组时

标签: php arrays laravel blade


【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        • 2016-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多