将一个数组拆分为3个不同的数组

时间:2012-12-17 10:38:03

标签: php multidimensional-array associative-array

我有一个php数组。我想将这个数组拆分为2个数组。请看下面的例子: -

$arrayIhave = array (
  'id' => '1',
  'name' => 'ripa',
  'roll' => '10',
  'country' => 'india',
  'state' => 'WB',
  'status' => 'active'
);

我需要将此分为以下几种: -

$array1 = array(
  'id' => '1',
  'status' => 'active'
);

$array2 = array(
  'name' => 'ripa',
  'roll' => '10'
);

$array3 = array(
  'country' => 'india',
  'state' => 'WB'
);

那么,什么是最好的专业解决方案?

3 个答案:

答案 0 :(得分:2)

我不确定你是如何弄乱阵列但你可以简单地使用array_chunk将它们分成两部分

 list($array1,$array2,$array3) = array_chunk($arrayIhave, 2,true);

或者只是使用模板来定义元素的位置

$template = array(
        array("id"=>null,"name"=>null),
        array("name"=>null,"roll"=>null),
        array("country"=>null,"state"=>null)
        );


$arrayIhave = array (
        'id' => '1',
        'name' => 'ripa',
        'roll' => '10',
        'country' => 'india',
        'state' => 'WB',
        'status' => 'active'
);

foreach ( $template as $var ) {
    $var = array_intersect_key($arrayIhave, $var);
    var_dump($var);
}

输出

array (size=2)
  'id' => string '1' (length=1)
  'name' => string 'ripa' (length=4)
array (size=2)
  'name' => string 'ripa' (length=4)
  'roll' => string '10' (length=2)
array (size=2)
  'country' => string 'india' (length=5)
  'state' => string 'WB' (length=2)

答案 1 :(得分:1)

您可以使用函数array_intersect_keyarray_flip的组合(后者函数在aray中翻转键和值):

$array1 = array_intersect_key($arrayIhave, array_flip(array('id', 'status')));
$array2 = array_intersect_key($arrayIhave, array_flip(array('name', 'roll')));
$array3 = array_intersect_key($arrayIhave, array_flip(array('country', 'state')));

答案 2 :(得分:0)

您可以根据原始数组中的数据创建新数组,使用关联键访问元素:

$array1 = array(
  'id' => $arrayIhave['id'],
  'status' => $arrayIhave['active']
);

$array2 = array(
  'name' => $arrayIhave['name'],
  'roll' => $arrayIhave['roll']
);

$array3 = array(
  'country' => $arrayIhave['country'],
  'state' => $arrayIhave['state']
);