php多维数组使其成为两个不同的数组

时间:2014-03-06 14:12:20

标签: php

我有一个多维数组,如下所示。数组结构一致

我想把它变成两个带偶数和奇数键的数组

$array = array(
array(P0=>"a",P1=>"b",P2=>"c",P3=>"d"),
array(P0=>"e",P1=>"f",P2=>"g",P3=>"h"),
array(P0=>"k",P1=>"l",P2=>"m",P3=>"n"),
array(P0=>"0",P1=>"p",P2=>"q",P3=>"r"),
array(P0=>"s",P1=>"t",P2=>"u",P3=>"v")
);

结果应如下所示。

$array1 = array(
array(array(P0=>"a",P2=>"c"),
  array(P0=>"e",P2=>"g"),
  array(P0=>"k",P2=>"m"),
  array(P0=>"o",P2=>"q"),
  array(P0=>"s",P2=>"u")
)

$array2 = array(
array(array(P0=>"b",P2=>"d"),
  array(P0=>"f",P2=>"h"),
  array(P0=>"l",P2=>"n"),
  array(P0=>"p",P2=>"r"),
  array(P0=>"t",P2=>"v")
) ;

我的代码如下,如何继续..

foreach ($array as $key=>$value)
            {
                for($i=2; $i<count($value);$i+=2)
                {
              print_r($value[$i]);
        }
     }

3 个答案:

答案 0 :(得分:0)

我认为你可以用它来分离Mulitdim。阵列

提取方法

http://us.php.net/extract

答案 1 :(得分:0)

您可以提取键的整数部分并将它们拆分为foreach循环。

<?php

$array = array(
    array('P0' => "a", 'P1' => "b", 'P2' => "c", 'P3' => "d"),
    array('P0' => "e", 'P1' => "f", 'P2' => "g", 'P3' => "h"),
    array('P0' => "k", 'P1' => "l", 'P2' => "m", 'P3' => "n"),
    array('P0' => "0", 'P1' => "p", 'P2' => "q", 'P3' => "r"),
    array('P0' => "s", 'P1' => "t", 'P2' => "u", 'P3' => "v")
);

$odd = array();
$even = array();

foreach ($array as $a) {
    $e = $o = array();

    foreach ($a as $k => $v) {
        // Extract the int part and check for odd/even
        $i = (int) substr($k, 1);

        if ($i % 2 == 0) {
            $e[$k] = $v;
        } else {
            $o[$k] = $v;
        }
    }

    $odd[] = $o;
    $even[] = $e;
}

var_dump($odd);
echo "<br />";
var_dump($even);
?>

答案 2 :(得分:0)

另一种解决方案。这是我的eval.in

$array = array(
  array(P0=>"a",P1=>"b",P2=>"c",P3=>"d"),
  array(P0=>"e",P1=>"f",P2=>"g",P3=>"h"),
  array(P0=>"k",P1=>"l",P2=>"m",P3=>"n"),
  array(P0=>"0",P1=>"p",P2=>"q",P3=>"r"),
  array(P0=>"s",P1=>"t",P2=>"u",P3=>"v")
);

$array2 = array();

foreach ($array as $key1 => &$value)
{
  foreach ($value as $key2 => $value2)
  {
       if($key2[1]%2 == 1) {
          $array2[$key1][$key2] = $value[$key2];
          unset($value[$key2]);
       }
  } 
}