|
|
|
| есть массив:
Array
(
[1] => Array
(
[2] =>
[3] => Array
(
[6] => Array
(
[7] => Array
(
[9] => Array
(
[10] => Array
(
[17] =>
)
[11] =>
[12] => Array
(
[19] =>
)
)
)
[8] => Array
(
[13] => Array
(
[14] => Array
(
[26] =>
)
)
)
)
[16] =>
[20] =>
[22] =>
)
[4] =>
[5] =>
)
[23] => Array
(
[24] =>
[25] =>
)
)
|
необходимо для каждого из его ID получить все входящие в него элементы, а именно, нужно получить массив вот в таком виде:
Array
(
[1] => Array
(
[0] => 2
[1] => 3
[2] => 4
[3] => 5
[4] => 6
[5] => 7
[6] => 9
[7] => 10
[8] => 17
[9] => 11
[10] => 12
[11] => 19
[12] => 8
[13] => 13
[14] => 14
[15] => 26
[16] => 16
[17] => 20
[18] => 22
)
[2] => Array
(
)
[3] => Array
(
[0] => 6
[1] => 7
[2] => 9
[3] => 10
[4] => 17
[5] => 11
[6] => 12
[7] => 19
[8] => 8
[9] => 13
[10] => 14
[11] => 26
)
[6] => Array
(
[0] => 7
[1] => 9
[2] => 10
[3] => 17
[4] => 11
[5] => 12
[6] => 19
[7] => 8
[8] => 13
[9] => 14
[10] => 26
[11] => 16
)
[7] => Array
(
[0] => 9
[1] => 10
[2] => 17
[3] => 11
[4] => 12
[5] => 19
)
[8] => Array
(
[0] => 13
[1] => 14
[2] => 26
)
[23] => Array
(
[0] => 24
[1] => 25
)
)
|
я там расписал не все элементы, думаю такой структуры достаточно, для каждого номера нужны все номера в него входящие (все дочерние, всех уровней вложенности) | |
|
|
|
|
|
|
|
для: skinny
(22.12.2012 в 18:55)
| |
<?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;
}
?>
| не проверял, скопировано из мана. | |
|
|
|
|
|
|
|
для: Sfinks
(23.12.2012 в 13:07)
| | не сработало
и что такое вообще Flatten an array?
Спасибо за участие.
вопрос закрыт
это была одна из функций
в процессе разработки пришлось переписать некоторые другие функции и эту в том числе, после множественных мучений удалось получить нужный массив другим способом. | |
|
|
|