[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Коллектор значений многомерного массива
Snus
Писал для отладок разного рода, может и вам пригодится этот маленький скриптик :)

Функция собирает все значения многомерного массива в отдельный одномерный массив.
haystack - массив, arrName - массив с собранными данными (по дефолту collectValues)

function collectValue($haystack,$arrName='collectValues'){
global ${$arrName};
if(!isset(${$arrName})) ${$arrName} = array();
if(is_array($haystack))
foreach($haystack as $value)
if(is_array($value))
collectValue($value,$arrName);
else
${$arrName}[] = $value;
else
${$arrName}[] = $haystack;
unset($haystack);
};


Для теста:
$arr = array(array('1',array('66','hgjhj',array('88','99',array('88','dfgfd',array('88','99',array('88','99',array('88','99',array('88','99',array('88','99',array('88','99')))))))))),'2','3',array('4','5'));


Вызов
collectValue($arr, 'newArr');

Получаем $newArr:

Array
(
[0] => 1
[1] => 66
[2] => hgjhj
[3] => 88
[4] => 99
[5] => 88
[6] => dfgfd
[7] => 88
[8] => 99
[9] => 88
[10] => 99
[11] => 88
[12] => 99
[13] => 88
[14] => 99
[15] => 88
[16] => 99
[17] => 88
[18] => 99
[19] => 2
[20] => 3
[21] => 4
[22] => 5
)

Содержимое $arr
Array
(
[0] => Array
(
[0] => 1
[1] => Array
(
[0] => 66
[1] => hgjhj
[2] => Array
(
[0] => 88
[1] => 99
[2] => Array
(
[0] => 88
[1] => dfgfd
[2] => Array
(
[0] => 88
[1] => 99
[2] => Array
(
[0] => 88
[1] => 99
[2] => Array
(
[0] => 88
[1] => 99
[2] => Array
(
[0] => 88
[1] => 99
[2] => Array
(
[0] => 88
[1] => 99
[2] => Array
(
[0] => 88
[1] => 99
)

)

)

)

)

)

)

)

)

)

[1] => 2
[2] => 3
[3] => Array
(
[0] => 4
[1] => 5
)

)




Спустя 16 часов, 32 минуты, 1 секунда (23.03.2011 - 10:16) linker написал(а):
Имхо лучше
function collectValue($haystack, array &$arr)
{
...
}

$newArr = array();
collectValue($arr, $newArr);
или так
function collectValue($haystack)
{
...
return $arr;
}

$newArr = collectValue($arr);

Спустя 34 минуты, 54 секунды (23.03.2011 - 10:51) Snus написал(а):
linker
Чем лучше? smile.gif Я пока особой разницы не вижу.

Спустя 2 часа, 29 минут (23.03.2011 - 13:20) linker написал(а):
Глядя на
collectValue($arr, 'newArr');
один черт догадается, что на выходе результат запишется в $newArr.

Спустя 5 минут, 21 секунда (23.03.2011 - 13:25) sergeiss написал(а):
Я самое главное не понял: область применения этой функции какая?

Спустя 3 часа, 50 минут, 35 секунд (23.03.2011 - 17:16) Snus написал(а):
linker
Я же в описании написал.
Цитата
arrName - массив с собранными данными (по дефолту collectValues)

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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.