2012-03-07 20 views
0

Я хочу, чтобы преобразовать этот массив ...
Как разбить массив на PHP?

Array 
(
[0] => Array 
    (
     [1] => A1 
     [2] => A11 
     [3] => A111 
    ) 

[1] => Array 
    (
     [4] => A2 
     [5] => A22 
    ) 

[2] => Array 
    (
     [6] => A3 
     [7] => A33 
    ) 

) 

в

Array 
( 
[0] => A1 
[1] => A11 
[2] => A111 
[3] => A2 
[4] => A22 
[5] => A3 
[6] => A33 
) 

Может ли один наставит меня на этом, пожалуйста?

+0

говорится в названии, PHP –

+0

@AndreiG - на самом деле это не было, когда я изначально видел это. также должны быть в тегах. – tvanfosson

+0

Возможный дубликат [Преобразование вложенного массива в плоский массив с PHP] (http://stackoverflow.com/questions/2538906/convert-a-nested-array-into-a-flat-array-with-php) –

ответ

1

Используйте этот

$newarray = array(); 
foreach($array as $subarray) { 
    foreach ($subarray as $key=>$value) { 
     $newarray[$key] = $value; 
    } 
} 
+0

Мне тоже нужен их соответствующий ключ. – saran

+0

Теперь он сохранит ключи из подмассива :). В этом случае вы можете пропустить что-то, потому что $ array [0] [1] = 'A01' и $ array [1] [1] = 'A11' вы получите только $ newarray [1] = 'A11', потому что ключи в subarray равны. – botzko

+0

Спасибо за вашу помощь .... – saran

4

«Сгладить» - это слово, которое вы ищете, - вы хотите сгладить этот массив.

Существует несколько примеров кода в комментариях руководства PHP:

http://php.net/manual/en/function.array-values.php

/** 
* Flattens an array, or returns FALSE on fail. 
*/ 
function array_flatten($array) { 
    if (!is_array($array)) { 
    return FALSE; 
    } 
    $result = array(); 
    foreach ($array as $key => $value) { 
    if (is_array($value)) { 
     $result = array_merge($result, array_flatten($value)); 
    } 
    else { 
     $result[$key] = $value; 
    } 
    } 
    return $result; 
} 
+0

Привет, Бен, спасибо за ответ. Я получил ответы, но значения ключа изменены и генерируются новые ключи. Как получить старые значения ключей здесь? – saran

+0

спасибо за вашу помощь. – saran

+0

no probs - @botzko получил обновление там передо мной :) –

1

Вы могли бы сделать что-то вроде

$flattened = call_user_func_array('array_merge', $your_array); 

Обратите внимание, что это требует, чтобы ваши индексы массива имеют числовые значения для правильной работы. Но похоже, что это не проблема. :) Кроме того, он не сохранит исходные индексы, но в конце он будет просто придерживаться новых значений.

1
$result = array_reduce($original, 'array_merge', array()); 

Это эквивалент fold в функциональном программировании. Также см. Руководство по PHP на array_reduce.


Если вы хотите сохранить кнопочная> значение привязок, замените array_merge с этой простой функции:

function array_merge_with_keys($a, $b) { 
    foreach($b as $key => $val) { 
    $a[$key] = $val; 
    } 
    return $a; 
}