Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie i zamiana => tablic
Forum PHP.pl > Forum > PHP
Krokodyl
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?
Jabol
a może usort??
Krokodyl
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
garry
Poczytaj o strtok()
[fisher]
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 :)
Cudi
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.
Fremd
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]
Cudi
Ale tutaj chodziło o pliki tekstowe, i tablice utworzoną za pomocą funkcji file, a do takiej tablicy to sortowanie sie nie nadaje...
Krokodyl
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:
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.