Группировка массива в переполнении стека

Пример значений массива:

      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. Основная задача — разделить массив на две части, основываясь на значениях индекса.

0

Решение

Я надеюсь, что это будет работать для вас ….

<?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);
1

Другие решения

Или вы можете попробовать это …

   <?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>';
0

По вопросам рекламы [email protected]