Просмотр полной версии : Выбрка значений из массива без повторений...
Собственно решил написать скрипт.... и возникли проблемы... подскажите что не так сделал....
<?php
$Massiv=array("1","2","3","1","2","3");
for ($i=0; $i<count($Massiv);$i++)
{
$temp[]=$Massiv[0];
for ($j=1;$j<count($Massiv);$j++ )
{
if ($Massiv[$i] !== $Massiv[$j])
$copy[]=$Massiv[$j];
}
$Massiv=$copy;
unset($copy);
}
print_r($temp);
?>
p.s функцию array_unique(); я знаю... хочу сделать без неё...
<?php
$Massiv=array("1","2","3","1","2","3");
$temp[]=$Massiv[0];
for ($i=0; $i<count($Massiv);$i++)
{
for ($j=1;$j<count($Massiv);$j++ )
{
if ($Massiv[$i] !== $Massiv[$j])
$copy[]=$Massiv[$j];
}
$Massiv=$copy;
unset($copy);
}
print_r($temp);
?>
Вроде так.
<?php
$Massiv=array("1","2","3","1","2","3");
$temp[]=$Massiv[0];
for ($i=0; $i<count($Massiv);$i++)
{
for ($j=1;$j<count($Massiv);$j++ )
{
if ($Massiv[$i] !== $Massiv[$j])
$copy[]=$Massiv[$j];
}
$Massiv=$copy;
unset($copy);
}
print_r($temp);
?>
Вроде так.
и че ты дал?
Во-первых не рабочий, во-вторых что изменил?
http://il.php.net/manual/ru/function.array-unique.php
function my_array_unique(&$old){
$new = array();
foreach($old as $key => $value){
if(!in_array($value, $new)) $new[$key] = $value;
}
return $new;
}?>
Пример:
<?php
function my_array_unique(&$old){
$new = array();
foreach($old as $key => $value){
if(!in_array($value, $new)) $new[$key] = $value;
}
return $new;
}
$temp = Array ("1","2","3","1","2","3");
print_r(my_array_unique($temp));
?>
Вывод:
Array ( [0] => 1 [1] => 2 [2] => 3 )
for ($i=0; $i<count($Massiv);$i++)
В случае, если $Massiv не изменяется во время работы цикла, нужно делать так:
$cnt = count($Massiv);
for ($i=0; $i<$cnt; $i++)
Таким способом мы нехило экономим время работы скрипта, т.к. в первом варианте пересчет количества элементов массива выполнялся при каждом проходе цикла, чем больше количество элементов, тем больше времени это занимает. А так мы считаем только один раз.
Isis
Спасибо. Хороший вариант... проверки на вхождения элемента в массив)
Helios
Спасибо за совет экономии времени выполнения.
Developer
16.05.2007, 19:48
:) Больше нечего написать? Зачем изобретать велосипед, который все равно не будет ездить быстрее? :)
Когда пишешь вот такие вот "велосипеды", ты тренируешь свой мозг. При этом иногда посещают идеи, которые потом, при создании больших проектов могут пригодиться.
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot