Нужен лучший, менее ресурсоемкий способ организации массива неперемещенных родителей-> потомков - PullRequest
0 голосов
/ 25 ноября 2010

Я использовал функцию, которую я создал, когда впервые начал программировать (или, по крайней мере, вскоре после этого), чтобы выполнить простую, но чрезвычайно полезную задачу по организации массива, основанного на родителях и детях. Примером того, где это было бы полезно, скажем, если бы у вас был список элементов, которые могут иметь бесконечную глубину дочерних элементов в базе данных, и вам нужно представить список по порядку в элементе выбора HTML с визуальным представление (-) глубины для каждого ребенка.

Теперь у меня есть функция (ы), которая делает это, и они работают во всех ситуациях, в которые я их поместил, однако они клонируют массив бесчисленное количество раз ... Пока что это не было проблемой , но я начинаю использовать эту функцию в местах, где могут быть организованы десятки тысяч записей. Поэтому я надеюсь, что кто-то здесь может помочь мне оптимизировать его.

Код: http://pastebin.com/knk0Fyd0

1 Ответ

1 голос
/ 25 ноября 2010

Извлеките функцию count() из цикла.Это узкое место.Вместо:

for ($i=0;$i<count($array);$i++)

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

$count=count($array);
for ($i=0;$i<$count;$i++)

Ваша InsertAfter() функция может быть легко выполнена с PHP array_splice() и / или array_slice().

...