Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie i zamiana => tablic
Krokodyl
post 22.05.2003, 18:03:39
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 22.05.2003
Skąd: Kłodzko / Wrocław / Droszków ...

Ostrzeżenie: (0%)
-----


Mam taką ciekawostkę do posortowania.
Tablica z elementami (powiedzmy)

Kod
$t=array("30***Ala ma kota", "7***kot na imię ma As", "45***coś tam jeszcze");


po rozbiciu
$t_ex=explode("***", $t);

za cholerę nie mogę tego posortować wg
Kod
$t_ex[0];

aby osiągnąć porządek:

7 (kot na imię ma As)
30 (Ala ma kota)
45 (coś tam jeszcze)

Macie jakiś pomysł na to?
A tak poza tym. To jak stworzyć tablicę wielowymiarową z 2 tablic?


--------------------
Choćbym szedł ciemną doliną, zła się nie ulęknę, albowiem mam gdzieś na twardzielu manuala....
Go to the top of the page
+Quote Post
Jabol
post 22.05.2003, 18:55:41
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


a może usort??
Go to the top of the page
+Quote Post
Krokodyl
post 22.05.2003, 20:21:00
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 22.05.2003
Skąd: Kłodzko / Wrocław / Droszków ...

Ostrzeżenie: (0%)
-----


Cytat
a może usort??

OK! Dzięki, przeoczyłem ten wątek.
Natomiast w opcji B czyli cały***wpis powyżej przed
Kod
explode("***", $t);
nie za bardzo da się posortować w ten sposób. No chyba, że to moja czaszka już dymi.
Właśnie się zastanawiam jakby to zamienić, takie elementy tablicy

"punkty***temat_glosowania"
na
"punkty" => "temat_glosowania"
i stworzyć nową tablicę z kluczami i wartościami.
Pozdrawiam [:::K:::] rolleyes.gif


--------------------
Choćbym szedł ciemną doliną, zła się nie ulęknę, albowiem mam gdzieś na twardzielu manuala....
Go to the top of the page
+Quote Post
garry
post 23.05.2003, 08:03:29
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 28.03.2003

Ostrzeżenie: (0%)
-----


Poczytaj o strtok()
Go to the top of the page
+Quote Post
[fisher]
post 23.05.2003, 09:14:45
Post #5





Grupa: Zarejestrowani
Postów: 151
Pomógł: 0
Dołączył: 4.03.2003

Ostrzeżenie: (0%)
-----


Cytat
Tablica z elementami (powiedzmy)

Kod
$t=array("30***Ala ma kota", "7***kot na imię ma As", "45***coś tam jeszcze");


po rozbiciu
$t_ex=explode("***", $t);


Przeciez explode nie rozbija tablic tylko stringi zwracajac jako wynik tablice !

Cytat
array explode ( string separator, string string [, int limit])


Na moj gust musisz poleciec np foreach'em po tablicy i kazdy z jej elementow potraktowac explode'm.

Pozdrawiam :)


--------------------
Wszystko ... co na świecie interesujące, bierze się z czyichś dziwacznych myśli [David Lynch]
Andrzej Lepper to Kretyn<
Go to the top of the page
+Quote Post
Cudi
post 23.05.2003, 14:31:03
Post #6


Administrator planeta/IRC


Grupa: Przyjaciele php.pl
Postów: 385
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Zabrze

Ostrzeżenie: (0%)
-----


Jeśli dobrze rozumiem to chcesz mieć możliwość posortowania danych z pliku wg dowolnego elementu. Ja w mojej klasie do obsługi bazy danych opartej na txt stosuje taki kod:
[php:1:3daf0aab90]<?php
function sort($array, $n = 0, $flag1 = SORT_ASC, $flag2 = SORT_REGULAR){
while($f = $this->explode($array)){
$t[] = $f[$n];
}
array_multisort($t, $flag1, $flag2, $array);

return $array;
}
?>[/php:1:3daf0aab90]
Tylko trzba troche pętle poprawić, np na foreacha, i potem w środku potraktować $array explodem.
Go to the top of the page
+Quote Post
Fremd
post 23.05.2003, 15:39:02
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 22.05.2003

Ostrzeżenie: (0%)
-----


Proponuje tym przypadku zastosowac tablice asocjacyjna.
[php:1:505b7901a9]<?php
$t = array( "Ala ma kota"=>30, "kot na imie ma As"=>7, "cos tam jeszcze"=>45 );

echo "Wyswietlanie zawartosci tabeli:<br><br>";
while ( $element = each( $t ) ) //zwraca poszczegolne elementy tab i przesuwa wskaznik na nastepny element
{
echo $element["value"];
echo " - ";
echo $element["key"];
echo "<br>";
}
echo"<br>";
echo "Sortowanie wedlug wartosci:<br>";
asort($t);
while( list ($key,$value) = each($t))
{
echo "$value - $key<br>";
}
echo"<br>";
echo "Sortowanie alfabetyczne wedlug kluczy:<br>";
ksort($t);
while( list ($value, $key) = each($t))
{
echo "$value - $key<br>";
}
?>[/php:1:505b7901a9]


--------------------
Nigdy nie bierz udzialu w cudzej krucjacie.
Go to the top of the page
+Quote Post
Cudi
post 23.05.2003, 17:56:26
Post #8


Administrator planeta/IRC


Grupa: Przyjaciele php.pl
Postów: 385
Pomógł: 0
Dołączył: 19.04.2003
Skąd: Zabrze

Ostrzeżenie: (0%)
-----


Ale tutaj chodziło o pliki tekstowe, i tablice utworzoną za pomocą funkcji file, a do takiej tablicy to sortowanie sie nie nadaje...
Go to the top of the page
+Quote Post
Krokodyl
post 30.05.2003, 11:37:53
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 22.05.2003
Skąd: Kłodzko / Wrocław / Droszków ...

Ostrzeżenie: (0%)
-----


Cytat
Jeśli dobrze rozumiem to chcesz mieć możliwość posortowania danych z pliku wg dowolnego elementu. Ja w mojej klasie do obsługi bazy danych opartej na txt stosuje taki kod:
[php:1:19b24d972d]<?php
function sort($array, $n = 0, $flag1 = SORT_ASC, $flag2 = SORT_REGULAR){
 while($f = $this->explode($array)){
  $t[] = $f[$n];  
 }  
 array_multisort($t, $flag1, $flag2, $array);
 
 return $array;  
}
?>[/php:1:19b24d972d]
Tylko trzba troche pętle poprawić, np na foreacha, i potem w środku potraktować $array explodem.


PORADZIŁEM SOBIE Z TYM DOKŁADNIE W TEN SPOSÓB.
WYKORZYSTAŁEM array_multisort()
Dzięki za zainteresowanie i poświęcony czas. :wink:


--------------------
Choćbym szedł ciemną doliną, zła się nie ulęknę, albowiem mam gdzieś na twardzielu manuala....
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 09:42