|
|
|
|
|
для: Eugene77
(22.04.2012 в 20:45)
| | Да, самый верхний его уровень, корневые ключи.
Ясно, просто думал как обходить именно сам корень массива. | |
|
|
|
|
|
|
|
для: confirm
(22.04.2012 в 19:07)
| | >Еще вопрос - то есть получается так, перемешиваются вложения, а по первичным ключам нет?
Мне непонятно что такое первичный ключ - это ж не SQL :-)
Если это ключи корневого массива, то тоже должно быть перемешивание значений с плавающей точкой. Не перемешиваются только массивы между собой, вместо того, чтобы их перемешивать, функция должна идти внутрь массива(являющегося элементом родительского) и перемешивать значения с соответствующим отростком другого массива. | |
|
|
|
|
|
|
|
для: Eugene77
(22.04.2012 в 19:05)
| | Еще вопрос - то есть получается так, перемешиваются вложения, а по первичным ключам нет? | |
|
|
|
|
|
|
|
для: confirm
(22.04.2012 в 18:22)
| | Ещё раз спасибо за обсуждение!
Приятно поговорить с человеком, хорошо знающим функции!
И полезно, - теперь я знаю в каком направлении дальше продожать разработку. | |
|
|
|
|
|
|
|
для: Eugene77
(22.04.2012 в 18:17)
| | Тогда да. | |
|
|
|
|
|
|
|
для: confirm
(22.04.2012 в 18:05)
| | >Ну я же в примере изменяю оба исходных массива. )
Цикл, который я написал полностью заменяет ваш код, а не частично.
Итоговую задачу он, конечно, не решает, но ту упрощённую, к которой вы свели - вроде решает.
Хоть он и очень медленный, раз нельзя сделать без циклов на функциях, то тогда он вроде лучше. | |
|
|
|
|
|
|
|
для: Eugene77
(22.04.2012 в 17:48)
| | Ну я же в примере изменяю оба исходных массива. )
Массив А в процессе становиться лишь случайной частью самого себя, а массив В его остатком. По массиву С, который сохраняет порядок ключей исходных массивов строим результирующий массив. Если первый ключ массива С находится в массиве А, то берем элемент из этого массива по этому ключу, в противном случае берем такой элемент в массиве В. Полученный элемент добавляем в массив М, и так до конца.
Я так понимаю, что перемешать вложения, это сделать с ними тоже самое, что и с первичными ключами? Рекурсия конечно, и, если это возможно, лучше иметь не два массива, а один, каждое вложение которого, это два массива описывающие два набора. При обходе такого массива, это будет лучше. | |
|
|
|
|
|
|
|
для: confirm
(22.04.2012 в 17:04)
| | >А при чем тут этот код? Вам же надо получить тот же порядок, что и в исходном массиве, а ключи то ведь раскиданы по обеим массивам, и порядок их отличен от исходных. В моем приеме массив C хранит порядок, в вашем примере что-то случайное.
Разве? Мне казалость, что в массиве $c должен получиться ровно тот же порядок, что и в массиве $a.
Тогда подскажите как произойдёт его нарушение? | |
|
|
|
|
|
|
|
для: Eugene77
(22.04.2012 в 16:51)
| | А при чем тут этот код? Вам же надо получить тот же порядок, что и в исходном массиве, а ключи то ведь раскиданы по обеим массивам, и порядок их отличен от исходных. В моем приеме массив C хранит порядок, в вашем примере что-то случайное. | |
|
|
|
|
|
|
|
для: confirm
(22.04.2012 в 16:39)
| |
<?
foreach($a as$k => $v) {
if(mt_rand(0,2) > 1) $c[$k] = $v;
else $c[$k] = $b[$k];
}
|
Какой код будет быстрей работать?
В любом случае, большое вам спасибо, так как я увидел именно благодаря этому обсуждению, что простого решения задачи на функциях, вероятно, не существует. | |
|
|
|
|