Я пытаюсь перебрать все дочерние элементы parent-> children или parent-> children->, но по какой-то причине я, похоже, теряю данные из массива.Я, кажется, теряю данные из массива
Объяснение: Я получаю массив, который называется блоком. В этом блоке у меня есть дочерний массив. У меня может быть больше дочернего массива у детей. У этих детей есть индекс атрибутов, присвоенный некоторыми значениями. Я ищу эти ценности. Если индекс установлен, я помещаю его в массив с переменной $ pos, которая определяет положение дочернего элемента. В некоторых случаях этот foreach работает отлично, но в некоторых случаях, когда у меня есть случайный порядок дочерних элементов с индексами, он теряет значения индекса и возвращает только один элемент.
Кстати, весь массив блоков передается как родительский элемент функции.
Следующий мой код.
private function addIndexKey($parent) {
$myKeys = array();
foreach ($parent->children as $child) {
$pos = $child->varGet('flow_pos');
if (!isset($pos))
$pos = $child->position;
if (isset($child->index))
$myKeys["$pos"] = $child->index;
if (isset($child->children) && count($child->children)>0) {
$subkeys = $this->addIndexKey($child);
if (count($subkeys)>0)
$myKeys["$pos"] = $subkeys;
}
}
ksort($myKeys);
return $myKeys;
}
Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?
Можете ли вы добавить немного больше объяснений о том, какие данные вы теряете? В вашем массиве '$ myKeys' просто отсутствуют некоторые данные, которые, по вашему мнению, должны быть там? Пример ввода с ожидаемым + фактическим выходом поможет. –
Иногда проблема может быть в размере этого массива, если массив имеет путь tooooo большой, вы потеряете последнюю часть массива, которая не подходит для него, это можно устранить, изменив размер памяти на php.ini – Germanaz0
I не думаю, что проблема с памятью, поскольку она должна содержать только 8 индексов. – Shaonline