分组PHP中的数组
问题描述:
样品阵列值:分组PHP中的数组
Array ([0] => '2014-07-04 ' [1] => 246)
Array ([0] => '2014-07-04' [1] => 213)
Array ([0] => '2014-07-04 ' [1] => 274)
Array ([0] => '2014-07-04 ' [1] => 249)
Array ([0] => '2014-07-04 ' [1] => 253)
Array ([0] => '2014-07-04 ' [1] => 23)
Array ([5] => '2014-07-04 ' [6] => 11)
Array ([5] => '2014-08-04 ' [6] => 1743)
Array ([5] => '2014-08-04 ' [6] => 1.31)
Array ([5] => '2014-08-04' [6] => 172)
Array ([5] => '2014-08-04 ' [6] => 179)
Array ([5] => '2014-08-04 ' [6] => 1709)
Array ([5] => '2014-08-04 ' [6] => 176)
现在我想这个数组分成两个数组象下面这样:
Firstarray=>array(
Array ([0] => '2014-07-04 ' [1] => 246)
Array ([0] => '2014-07-04' [1] => 213)
Array ([0] => '2014-07-04 ' [1] => 274)
Array ([0] => '2014-07-04 ' [1] => 249)
Array ([0] => '2014-07-04 ' [1] => 253)
Array ([0] => '2014-07-04 ' [1] => 23)
)
Secondarray=>array(
Array ([5] => '2014-07-04 ' [6] => 11)
Array ([5] => '2014-08-04 ' [6] => 1743)
Array ([5] => '2014-08-04 ' [6] => 1.31)
Array ([5] => '2014-08-04' [6] => 172)
Array ([5] => '2014-08-04 ' [6] => 179)
Array ([5] => '2014-08-04 ' [6] => 1709)
Array ([5] => '2014-08-04 ' [6] => 176)
)
请提出一些想法。帮助我在php中编写代码。主要挑战是根据索引值将数组拆分为两部分。
答
我希望这会为你工作....
<?php
$combArray = array
(
Array (0 => '2014-07-04', 1 => 246),
Array (0 => '2014-07-04', 1 => 213),
Array (0 => '2014-07-04', 1 => 274),
Array (0 => '2014-07-04', 1 => 249),
Array (0 => '2014-07-04', 1 => 253),
Array (0 => '2014-07-04', 1 => 23 ),
Array (5 => '2014-07-04', 6 => 11 ),
Array (5 => '2014-08-04', 6 => 1743),
Array (5 => '2014-08-04', 6 => 1.31),
Array (5 => '2014-08-04', 6 => 172),
Array (5 => '2014-08-04', 6 => 179),
Array (5 => '2014-08-04', 6 => 1709),
Array (5 => '2014-08-04', 6 => 176)
);
$tmpKey = '';
$ResArray = array();
$i=0;
foreach ($combArray as $arLoop)
{
$arkeys = array_keys($arLoop);
if ($tmpKey != $arkeys[0])
{
$i++;
}
$ResArray[$i][] = $arLoop;
$tmpKey = $arkeys[0];
}
print_r($ResArray);
+0
不错,它工作..你知道如何解析ResArray。 – Sivasailanathan 2014-09-19 07:06:30
答
或者你可以试试这个...
<?php
$items = array(
array(0 => '2014-07-04', 1 => 246),
array(0 => '2014-07-04', 1 => 213),
array(0 => '2014-07-04', 1 => 1500),
array(5 => '2014-07-04', 6 => 11),
array(5 => '2014-07-04', 6 => 112),
array(5 => '2014-07-04', 6 => 23131),
array(7 => '2014-07-04', 8 => 23131),
);
$results = [];
foreach ($items as $element) {
grouper($element,$results);
}
function grouper(array $arr,array &$res)
{
static $group = 1;
if (! array_key_exists($group, $res)) {
$res[$group][] = $arr;
return false;
}
if (isset($res[$group][array_keys($arr)[0]])){
$res[$group][] = $arr;
} else {
$res[$group][] = $arr;
$group++;
}
}
echo '<pre>' , print_r($results,true) , '</pre>';
你有一个数组的数组开始?如果是这样,根据我的最佳猜测,您将迭代每个元素并检查其中第一个元素的键。 – 2014-09-19 05:23:17
如果你知道密钥,那么它已经分开。 – 2014-09-19 05:25:10
数组值将被动态地改变。有时候索引会像[0] [1],[5] [6],[10] [11],[15] [16]那样。所以我需要创建通用函数将其分组为单独的数组 – Sivasailanathan 2014-09-19 05:25:59