如何拆分已加载的多维数组w / load-> vars()

时间:2013-07-07 19:23:24

标签: arrays codeigniter multidimensional-array codeigniter-2 loadvars

此数组由$this->load->var($data)传递,带有一些全局变量。我需要从var为我实例化的关联数组中提取下面的数组。该数组目前看起来像这样:注意下面的多维数组。

 Dump => array(1) {
  [9] => array(1) {
    [0] => object(stdClass)#21 (8) {
      ["day"] => string(2) "09"
      ["eventContent"] => string(14) "slug ok"
      ["eventTitle"] => string(4) "Slug"
      ["id"] => string(1) "4"
      ["user"] => string(3) "CZL"
      ["user_id"] => string(1) "1"
      ["slug"] => string(4) "Slug"
      ["eventDate"] => string(10) "2013-07-09"
    }
  }
}

我需要将其转换为如下所示: 注意下面的单维数组。

Dump => array(1) {
  [0] => object(stdClass)#21 (7) {
      ["day"] => string(2) "09"
      ["eventContent"] => string(14) "slug ok"
      ["eventTitle"] => string(4) "Slug"
      ["id"] => string(1) "4"
      ["user"] => string(3) "CZL"
      ["user_id"] => string(1) "1"
      ["slug"] => string(4) "Slug"
      ["eventDate"] => string(10) "2013-07-09"
  }
}

除了将多重转换为单个数据外,还有一种方法可以从多维数组中调用奇异数组吗?

我在多维数组上使用foreach,但输出不正确。这是我正在使用的。 calendars是我传递给它的数组。

foreach ($calendars as $calendar) {
        $url = calendar_link($calendar);
        $string .= '<li>';
        $string .= '<h3>' . anchor($url, e($calendar->eventTitle)) .  ' ›</h3>';
        $string .= '<p class="pubdate">' . e($calendar->eventDate) . '</p>';
        $string .= '</li>';
    }

function calendar_link($calendar){
return 'calendar/event/' . intval($calendar->id) . '/' . e($calendar->slug);
}

1 个答案:

答案 0 :(得分:0)

如果多维数组看起来与转储完全一样,那么你应该可以做类似的事情:

$calendar_single = $calendars[9]; // I dont know why you get 9 as array key here?

然后你应该有一个包含一个对象的数组。

如果您想直接联系该对象,请尝试以下方法:

$calendar_object = $calendars[9][0];

然后你应该工作:

foreach ($calendar_object as $calendar) { ...

不是最好的解决方案,如果您的数组键(9)将更改,它将无法工作..

您还可以尝试一种更通用的解决方案,无论数组键索引如何都可以正常工作:

foreach($multi as $single){
    foreach($single as $object){
        foreach($object as $calendar){
            // YOUR CODE HERE
            calendar_link($calendar); // ETC…
        }       
    }
}