-1

我有一个 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'
);

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

4

3 回答 3

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)
于 2012-12-17T10:46:30.547 回答
1

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

$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')));
于 2012-12-17T10:53:08.053 回答
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']
);
于 2012-12-17T10:44:40.143 回答