PDA

Просмотр полной версии : Ребята нужна помощ.


Romaxa55
19.01.2009, 08:12
Какая ф-ия в пхп али вообще как можно отсортировать список, исключа одинаковые строки и строго зависила от регистра сама сортировка. Пример

xyZ
xYz
Xyz
xyZ
тоесть в нашем случаи xyZ совершенно одинаковые строки. А значит результат будет
xyZ
xYz
Xyz
Вот как бы лучше сделать это все. Нашел перловский пример, но чтот сил не хватает переписать, выкладываю.

#! /usr/bin/perl -w

if( !$ARGV[0] ) {
die "Usage: $0 <file>\n";
}

open FILE, $ARGV[0] or die "Can't open $ARGV[0]: $!\n";
while(<FILE>) {
push @old, $_;
}
close FILE;
unlink $ARGV[0];

for($i=0; $i<@old; $i++) {
push @new, $old[$i];

if( $i ) {
$del=0;

for($j=0; $j<@new-1; $j++) {
if( !$del && $old[$i] eq $new[$j] ) { $del=1; }
}

if( $del ) { pop @new; }
}
}

open FILE, ">$ARGV[0]" or die "Can't open $ARGV[0]: $!\n";
print FILE @new;
close FILE;

Кому не сложно переведите в пхп вид, с меня ++

Romaxa55
19.01.2009, 08:17
Дополняю...Смысл в том что нужный результь я получаю
echo $result;
но переменая не отортирована, вот бы ее еще отсортировать и уже вывестив $result2

kenshin
19.01.2009, 11:58
Может попробывать регуляркой в цикле искать совпадения строго с шаблоном,или проще например stripos или чтото подобное приминить опятьже в цикле например.

kenshin
19.01.2009, 12:02
add:

$text = file('text.txt');
foreach(Создаем цикл){
$search = preg_match_all("#$who#",$text);
echo $search[0];
}

чтото вроде,но можно в 5 раз проще
Ой,ошибся,
проще прег_репласе увсе изменить,а затем то что получилось записать в файлик.ТОесть щем шаблон,заменяем на '' делаем трим,м пишем в файл.

prescott
19.01.2009, 12:21
$arr=array("xxx", "Yyy","TTT", "Yyy");
$arr1=array();

foreach ($arr as $k=>$z) {
if (!in_array($z, $arr1)) $arr1[]=$z;
}

sort($arr1);
Как то так

Gifts
19.01.2009, 13:10
Romaxa55
function in_iarray($str, $a){
foreach($a as $v){
if(strcasecmp($str, $v)==0){return true;}
}
return false;
}

function array_iunique($a){
$n = array();
foreach($a as $k=>$v){
if(!in_iarray($v, $n)){$n[$k]=$v;}
}
return $n;
}

$arr=array("xxx", "Yyy","TTT", "YYy");
$arr=array_iunique($arr);
usort($arr,'strcasecmp');
print_r($arr);

nerezus
19.01.2009, 14:29
ПРивести к lower case, удалить повторы. 3 стандартных функции.

P.S. помощ - это самец помощи?

Romaxa55
19.01.2009, 14:52
Сейчас попробуем отпишусь как получится что нить =) спасиб.. как сделаю с меня ++