|
Страница 1 из 1 [ Сообщений: 27 ] |
Автор |
Сообщение |
Intelligent
новый человек
|
|
есть 2 массива, надо собрать в один, причём не потеряв порядок. как ? [img]images/smiles/icon_smile.gif[/img] вот эти массивы типа : <BLOCKQUOTE><font size="1" face="Verdana, Tahoma, sans-serif">code:</font><HR><pre><? $first=array(); $first[1]= "первый"; $first[6]= "четвёртый"; $first[16]= "пятый"; print_r($first); $second=array(); $second[3]= "второй"; $second[5]= "третий"; $second[20]= "последний"; print_r($second); ?></pre><HR></BLOCKQUOTE>а надо получить: <BLOCKQUOTE><font size="1" face="Verdana, Tahoma, sans-serif">code:</font><HR><pre> Array ( [1]=> "первый"; [3]=> "второй"; [5]=> "третий"; [6]=> "четвёртый"; [16]=> "пятый"; [20]=> "последний"; ) </pre><HR></BLOCKQUOTE>
[ 28 Мая 2002: Исправлено Intelligent ]
|
|
|
|
|
Intelligent
новый человек
|
|
ой … народ …. на мыло то не пришли ваши посты … я тут посидел с пол-часика, ничего не увидел и ушёл … а почту оставил проверятся … сорри что отлучился [img]images/smiles/icon_smile.gif[/img] значь так, вроде всё решилось вот так : <BLOCKQUOTE><font size="1" face="Verdana, Tahoma, sans-serif">code:</font><HR><pre><? $first=array(); $first["a"]= "первый"; $first["e"]= "четвёртый"; $first["h"]= "пятый"; $second=array(); $second["b"]= "второй"; $second["e"]= "третий"; // attention ! same key !!! $second["z"]= "последний"; function array_sorted_merge(){ $result=array(); for ($argument=0; $argument<@func_num_args(); $argument++) { $merg=@func_get_arg($argument); @reset($merg); while ($element=@each($merg)) if (@$result[$element[0]]) @array_push($result,$element[value]); else $result[$element[0]]=$element[value]; } @ksort($result); // may be removed, merge will not be sorted return $result; } $merged=array_sorted_merge($first,$second); print"<pre>"; print_r($merged); ?></pre><HR></BLOCKQUOTE> есть у кого идеи по оптимизации ?
|
|
|
|
|
Intelligent
новый человек
|
|
Long ок, вынес. прав [img]images/smiles/icon_smile.gif[/img] а foreach к кому применять ? [img]images/smiles/icon_wink.gif[/img]
|
|
|
|
|
Intelligent
новый человек
|
|
Crazy [img]beer.gif[/img]
|
|
|
|
|
Intelligent
новый человек
|
|
Long и как ты хочешь это зарисовать ? [img]images/smiles/icon_smile.gif[/img] оно же возвращяет аргументы по номерам, а не всё сразу …
|
|
|
|
|
Intelligent
новый человек
|
|
то есть вот так ? : <BLOCKQUOTE><font size="1" face="Verdana, Tahoma, sans-serif">code:</font><HR><pre>function array_sorted_merge(){
$result=array(); $arguments=@func_get_args(); while ($merg=@each($arguments)) { @reset($merg); while ($element=@each($merg)) if (@$result[$element[0]]) @array_push($result,$element[value]); else $result[$element[0]]=$element[value]; } @ksort($result); // may be removed, merge will not be sorted return $result; } </pre><HR></BLOCKQUOTE>
|
|
|
|
|
Intelligent
новый человек
|
|
быстрее не быстрее, но если передать на сортировку 2 массива обьектов или массивов - взглюкивает.
|
|
|
|
|
Intelligent
новый человек
|
|
и кстати, не на всех версиях РНР твой вариант обработки массивов одинаково обрабатывается. проверь. я на этом сьел пару неприятных суток.
|
|
|
|
|
Intelligent
новый человек
|
|
Long а прикинь спросил бы … никто не запутался бы, а ? [img]images/smiles/icon_smile.gif[/img] шутю, может и не запутался бы никто, но обьяснить что мне нада было бы не легче это точно.
и когда ты успел съесть пару суток, если запостил только сегодня? так я про метод прохода по массиву говорю, а не про саму проблему слияния массивов. и вообще, кто сказал что я чуть что сюда бегу ? я ещё сам подумать могу … до того как сюда постить [img]images/smiles/icon_smile.gif[/img]
|
|
|
|
|
Intelligent
новый человек
|
|
ок, решение там внутри было [img]images/smiles/icon_smile.gif[/img] вот это ещё мона оптимизнуть ? <BLOCKQUOTE><font size="1" face="Verdana, Tahoma, sans-serif">code:</font><HR><pre>function array_sorted_merge(){
$result=array(); $arguments=@func_get_args(); @reset($arguments); while ($argument=@each($arguments)){ $merg=$argument[value]; while ($element=@each($merg)) if (@$result[$element[0]]) @array_push($result,$element[value]); else $result[$element[0]]=$element[value]; } @ksort($result); // may be removed, merge will not be sorted return $result; } </pre><HR></BLOCKQUOTE>
[ 28 Мая 2002: Исправлено Intelligent ]
|
|
|
|
|
Intelligent
новый человек
|
|
[img]beer.gif[/img] в тему однако [img]images/smiles/icon_smile.gif[/img]
|
|
|
|
|
|
Страница 1 из 1 [ Сообщений: 27 ] |
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
|
|