Пример значений массива:
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);
Или вы можете попробовать это …
<?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>';