2011-04-28 232 views
2

我有一个阵列,其看起来像这样:PHP array_push() - 推新数据到阵列

Array 
(
    [0] => Array 
     (
      [1] => Array 
       (
        [name] => vrij 
        // ... 
       ) 

      [2] => Array 
       (
        [name] => zat 
        // ... 
       ) 
     ) 
) 

我建立使用该阵列的for循环;然而,我需要再向阵列中推送4个'记录',在这个循环中我不能这样做。

我想要的阵列看起来像这样,在推后:

Array 
(  
    [0] => Array 
    (
     [1] => Array 
      (
       [name] => vrij 
       // ... 
      ) 

     [2] => Array 
      (
       [name] => zat 
       // ... 
      ) 
     // ... 
    ) 
    [1] => Array 
    ( 
      [1] => Array 
       (
       [name] => zon 
       //... 
      ) 
      [2] // etc 
    ) 
) 

四个新的记录应该推到数组[1],所以我得到的东西像

$array[1][0], $array[1][1], etc. 0 1 2 3 contains the new data. 

我尝试了很多东西,说实话。我需要做的这些推四个人,因此我试图for循环:

for($i = 0; $i < 4; $i++) 
    { 
     $day_info = $this->get_day_info($i, $data['init']['next_month'], $data['init']['current_year']); 
     $push['name'] = $day_info['day_name']; 
     array_push($data['dates'], $push); 
    } 

和所有其他种类的事情[],[1] [$ i],等等。有时它甚至增加了5个阵列!我很困惑,为什么它不会只添加[1] [1],[1] [2],..我可能错过了这里的东西。非常感谢。

如果不清楚,请告诉我,我会添加更多代码来更好地解释问题。

+0

你想要什么最终阵列的样子? – PeeHaa 2011-04-28 17:48:51

+0

第二个代码块有我想要它看起来像:)虽然也许这不是很清楚。我会很快编辑! – cabaret 2011-04-28 17:50:00

+0

'嗨。我有一个看起来像这样的数组......'你的第一个数组看起来很奇怪:它是三重嵌套的数组,因此,例如,你可以写'$ x [0] [1] ['name']'到得到'vrij'。你确定这是正确的吗?我敢打赌它不是。 – leonbloy 2011-04-28 17:50:52

回答

2
$extradates = array(1 => 'zon', 2 => 'maa'); 
$data['dates'][] = $extradates; 

将使用新索引向数组添加2个额外的日期。

虽然如果我看到你想要完成什么,我认为可能有更好的方法。

这上面的作品虽然:)

+0

谢谢。我只是将数据放入一个数组中,并使用类似于第二行的东西将它添加到我的$ data ['dates']数组中。应该远离那个我猜想的array_push()事物;这样更容易。我的老师告诉我使用array_push()但是meh。谢谢! – cabaret 2011-04-28 18:01:01

+0

@cabaret:告诉你以下老师:大部分时间(总是???)array_push()比较慢。因为函数调用总是比较慢,并且在array_push之上需要混合参数,这也会使其变慢。还要注意$ array []看起来更清洁,并且更易于键入:)并且yw ofc :) – PeeHaa 2011-04-28 18:09:19