我有一个多维数组,如下所示。数组结构一致
我想把它变成两个带偶数和奇数键的数组
$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]);
}
}
答案 0 :(得分:0)
答案 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]);
}
}
}