【问题标题】:Create multi-dimensional StdClass Object array with foreach使用 foreach 创建多维 StdClass 对象数组
【发布时间】:2013-10-12 19:53:38
【问题描述】:

我正在尝试创建一个多维 StdClass 对象,但输出始终来自第一个和第二个 foreach 循环的最后一个循环,而不是所有循环的集合。

每天应该有 3 个 $exercises 里面。还有 5 天,但只有 1 天有 1 个练习。

功能&电流输出: http://paste.laravel.com/WIU

【问题讨论】:

    标签: php object laravel laravel-4


    【解决方案1】:

    看起来正在发生的事情是您每次循环时都会覆盖 data 对象的 days 属性。而不是stdClass$data->days 应该是一个数组,然后您应该将描述每天的 stdClass 对象添加到该数组中......像这样(使用第 14 行左右的部分代码):

    $data->days = array(); //create the array
    foreach ($jsonDays as $day) 
            {
                $newDay = new stdClass(); //create a day object
                $newDay = $day->day; //add things to the day object
                ...
                $data->days[] = $newDay; //push the day object onto your day array.
    

    同样的方法也适用于每天添加多个练习。

    【讨论】:

      【解决方案2】:

      当使用简单对象时,没有特别需要 stdObjects。这是一个简单的多维对象结构,用于存储数据数组。

      <?php
      
      //create exercise array: 3 exercise rows x 5 day columns
      $ex[0] = ["aa", "ab", "ac", "ad", "ae"];
      $ex[1] = ["ba", "bb", "bc", "bd", "be"];
      $ex[2] = ["ca", "cb", "cc", "cd", "ce"];
      
      //create your day class for the 3 exercises
      class day{
          public $ex0;
          public $ex1;
          public $ex2;
      }
      
      //create your period (days) class for all the days
      class days{
          public $days;
      }
      
      //create objects for each day of exercises and store the exercises
      for($i=0;$i<count($ex[0]);$i++){ //for each of 5 days
          $day[$i] = new day();
          $day[$i]->ex0 = $ex[0][$i];//1st exercise of the i_th day
          $day[$i]->ex1 = $ex[1][$i];//2nd exercise of the i_th day
          $day[$i]->ex2 = $ex[2][$i];//3rd exercise of the i_th day
      }
      
      //create an object for all the data
      $days = new days;
      
      //store the array of day objects with their data in the days object
      $days->days = $day;
      
      //confirm object creation and structure
      print_r($days);
      
      //check the json_encode result
      echo "<br><br>" . (json_encode($days)) . "<br>";
      
      ?>
      

      结果:

      days Object ( [days] => Array ( 
      [0] => day Object ( [ex0] => aa [ex1] => ba [ex2] => ca ) 
      [1] => day Object ( [ex0] => ab [ex1] => bb [ex2] => cb ) 
      [2] => day Object ( [ex0] => ac [ex1] => bc [ex2] => cc ) 
      [3] => day Object ( [ex0] => ad [ex1] => bd [ex2] => cd ) 
      [4] => day Object ( [ex0] => ae [ex1] => be [ex2] => ce ) ) ) 
      
      {"days":[{"ex0":"aa","ex1":"ba","ex2":"ca"}, 
      {"ex0":"ab","ex1":"bb","ex2":"cb"},{"ex0":"ac","ex1":"bc","ex2":"cc"}, 
      {"ex0":"ad","ex1":"bd","ex2":"cd"},{"ex0":"ae","ex1":"be","ex2":"ce"}]}
      

      【讨论】:

        猜你喜欢
        • 2012-11-16
        • 1970-01-01
        • 2016-11-07
        • 1970-01-01
        • 2012-11-02
        • 2016-05-11
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多