-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して2つの部分に分割できます

 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_key関数との組み合わせを使用できますarray_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 に答える