向数组添加新行

Add New Rows To Array

我有一个如下所示的数组:

Array (
 [class_name] => Array ( [0] => 1 [1] => 2 )
 [zone1_price] => Array ( [0] => 1 [1] => 2 )
 [zone2_price] => Array ( [0] => 1 [1] => 2 )
 [zone3_price] => Array ( [0] => 1 [1] => 2 )
 [zone4_price] => Array ( [0] => 1 [1] => 2 ) 
)

我希望能够添加新行:

Array (
 [class_name] => Array ( [0] => 3 )
 [zone1_price] => Array ( [0] => 3 )
 [zone2_price] => Array ( [0] => 3 )
 [zone3_price] => Array ( [0] => 3 )
 [zone4_price] => Array ( [0] => 3 )
)

然后会变成:

Array (
 [class_name] => Array (  [0] => 1 [1] => 2 [2] => 3 )
 [zone1_price] => Array ( [0] => 1 [1] => 2 [2] => 3 )
 [zone2_price] => Array ( [0] => 1 [1] => 2 [2] => 3 )
 [zone3_price] => Array ( [0] => 1 [1] => 2 [2] => 3 )
 [zone4_price] => Array ( [0] => 1 [1] => 2 [2] => 3 )
)

我想我需要使用 array_merge,但我也认为我需要分开数组,给它们一个某种类型的键,然后组合它们,然后添加它们,然后排列它们。

我应该从哪里开始做这样的事情?

你可以这样做

<?php
  $first=array(
    'class_name'=>array(1,2),
    'zone1_price'=>array(1,2),  
    'zone2_price'=>array(1,2),  
    'zone3_price'=>array(1,2),  
    'zone4_price'=>array(1,2),
    );
  $second=array(
    'class_name'=>array(3,4),
    'zone1_price'=>array(3,4),  
    'zone2_price'=>array(3,4),  
    'zone3_price'=>array(3,4),  
    'zone4_price'=>array(3,4),  
    );
  $fs=sizeof($first['class_name']);
  $ss=sizeof($second['class_name']);
  foreach($first as $k => $v)
  {
    for($i=$fs;$i<$ss+$fs;$i++)
    {
      $first[$k][$i]=$second[$k][$i-$fs];
    } 
  }

你用foreach遍历数组,我们将当前元素的key赋值给$key变量(在这种情况下,每次迭代key都是class_name, zone1_price, zone2_price, zone3_price, zone4_price),我们使用array_push并添加原始数组的新值。

此外,如果您想将新值分配给数组的开头,可以使用 array_unshift.

$array = array(
  'class_name' => array(0 => 1, 1 => 2),
  'zone1_price' => array(0 => 1, 1 => 2),
  'zone2_price' => array(0 => 1, 1 => 2),
  'zone3_price' => array(0 => 1, 1 => 2),
  'zone4_price' => array(0 => 1, 1 => 2),
);

foreach($array as $key => $value){
  array_push($array[$key], 3);
}

结果:

Array
(
    [class_name] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [zone1_price] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [zone2_price] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [zone3_price] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

    [zone4_price] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )

)

另一种可能的方式

$array = array(
            'class_name' => array( '0' => 1, '1' => 2 ),
            'zone1_price' => array( '0' => 1, '1' => 2 ),
            'zone2_price' => array( '0' => 1, '1' => 2 ),
            'zone3_price' => array( '0' => 1, '1' => 2 ),
            'zone4_price' => array( '0' => 1, '1' => 2 )
    );

$array2 = array(
            'class_name' => array( '0' => 3 ),
            'zone1_price' => array( '0' => 3 ),
            'zone2_price' => array( '0' => 3 ),
            'zone3_price' => array( '0' => 3 ),
            'zone4_price' => array( '0' => 3 )
    );

print_r(array_merge_recursive($array, $array2));