Как я могу разбить многомерный массив? - PullRequest
0 голосов
/ 09 февраля 2012

У меня есть многомерный массив, и я хочу его разбить ... Вот массив.

array
(
    [0] => array
    (
        [0] => array
        (
            [0] => 1
            [intsch_id] => 1
        )
        [1] => array
        (
            [0] => 2
            [intsch_id] => 2
        )
    )
)

И я хочу разбить его на

array (
    [0] => 1
    [intsch_id] => 1,
    [1] => 2
    [intsch_id] => 2
)

И это вдинамический запрос, поэтому результаты не всегда будут такими простыми.Он будет иметь ту же структуру, что и приведенный выше многомерный массив.

Ответы [ 3 ]

0 голосов
/ 09 февраля 2012

В массиве результатов отсутствуют две запятые?
Одна перед каждым ключом [intsch_id]?
Примерно так:

array ( [0] => 1, [intsch_id] => 1, [1] => 2, [intsch_id] => 2)

Если это так, невозможно иметь несколько значений массива с одинаковыми ключами, [intsch_id].

Однако вы простохочу свернуть внешний массив, содержащий эти данные, это довольно просто:

<code>$source_array = array(
    array(
        array(
            "0" => 1,
            "intsch_id" => 1
        ),
        array(
            "0" => 2,
            "intsch_id" => 2
        )
    )
);
echo '<pre>'; print_r($source_array); echo '
';$ return_array = $ source_array [0];echo '
'; print_r($return_array); echo '
';
0 голосов
/ 09 февраля 2012

Я думаю, что это самый быстрый способ:

function array_flat(&$ar) {
    function flat($item, $key, $res)
    {
        $res[$key] = $item;
    }
    $res = array();
    array_walk_recursive($ar, 'flat', &$res);
    return $res;
}

$sweet = array('a' => 'apple', 'b' => 'banana');
$fruits = array('sweet' => $sweet, 'sour' => 'lemon');

print_r(array_flat($fruits));
0 голосов
/ 09 февраля 2012

Эта функция сгладит структуру вашего массива:

function flatten_array($arr) {
  if (!is_array($arr)) return false;
  $ret = array();
  foreach ($arr as $key => $val) {
    if (is_array($val)) {
      $ret = array_merge($ret, flatten_array($val));
    } else {
      $ret[$key] = $value;
    }
  }
  return $ret;
}
...