FAQ | Points | Add... | Recent posts | Search | Register | Log in


[PHP] Sortowanie tablic wielowymiarowych


Post new topic  This topic is locked      Main Page -> Forum Index -> Programming Generally -> [PHP] Sortowanie tablic wielowymiarowych
Author
Message
malum
Poziom 19
Poziom 19


Joined: 20 Mar 2005
Posts: 648
Location: Bydgoszcz

Post#1 Post from the author of the topic 25 Jan 2012 17:41   

[PHP] Sortowanie tablic wielowymiarowych


Mam pewien problem. Zabrałem się za posortowanie tablic poleceniem
Code PHP - [expand]
array_multisort($tab1, SORT_ASC, SORT_STRING, $tab2)
Tablice zostały posortowane prawie dobrze. Problem polega na tym, że na samym końcu tablicy znalazły się nazwiska z polskimi literami na przedzie - idzie to jakoś obejść?

Przy okazji drugie pytanie, jak posortować tablicę dwuwymiarową postaci tab[x][y] według danych z x=1 lub y=1, bo nie mogłem sobie z tym poradzić i więc wrzucam dane do oddzielnych tablic i sortuję jak wyżej.
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 25 Jan 2012 17:41   





Back to top
   
dir3ctor
Poziom 21
Poziom 21


Joined: 11 Nov 2004
Posts: 1109
Location: z internetu

Post#2 25 Jan 2012 18:00   

Re: [PHP] Sortowanie tablic wielowymiarowych


Spróbuj setlocale(LC_COLLATE, "pl_PL");
Back to top
   
malum
Poziom 19
Poziom 19


Joined: 20 Mar 2005
Posts: 648
Location: Bydgoszcz

Post#3 Post from the author of the topic 25 Jan 2012 21:42   

Re: [PHP] Sortowanie tablic wielowymiarowych


dir3ctor wrote:
Spróbuj setlocale(LC_COLLATE, "pl_PL");


Nie bardzo wiem jak zastosować polecenie setlocale z tablicą dwuwymiarową lub dwiema tablicami sortowanymi równolegle jak w powyższym przykładzie?!
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 25 Jan 2012 21:42   





Back to top
   
dir3ctor
Poziom 21
Poziom 21


Joined: 11 Nov 2004
Posts: 1109
Location: z internetu

Post#4 02 Feb 2012 20:46   

Re: [PHP] Sortowanie tablic wielowymiarowych


Daj próbkę takiej tablicy to się pobawię nią.
Back to top
   
malum
Poziom 19
Poziom 19


Joined: 20 Mar 2005
Posts: 648
Location: Bydgoszcz

Post#5 Post from the author of the topic 02 Feb 2012 21:51   

Re: [PHP] Sortowanie tablic wielowymiarowych


dir3ctor wrote:
Daj próbkę takiej tablicy to się pobawię nią.


W jaki sposób podesłać Ci te próbki i jak mają one wyglądać?

Chodzi o standardową tablicę postaci $tab[i][j]
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 02 Feb 2012 21:51   





Back to top
   
arnoldziq
Poziom 23
Poziom 23


Joined: 14 Apr 2006
Posts: 2934
Location: High Wycombe

Post#6 03 Feb 2012 00:18helpful post - solution   

Re: [PHP] Sortowanie tablic wielowymiarowych


Z setlocale jest jeden problem :/
Nie działa... Przynajmniej nie do końca.
Code PHP - [expand]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
echo '<br> Nieposortowana : <br>';
$array=array('Łysiak', 'Markowski','Nowak','Śliwiński','Antkowiak','Łukaszewicz','Kowalski','Staruch', 'Szczepaniak', 'Świdlik');
var_export($array);
 
setlocale(LC_COLLATE, 'pl_PL.utf8');
usort($array, 'strcoll');
echo '<br> Posortowana jako pl_PL.utf8 : <br>';
var_export($array);
 
setlocale(LC_COLLATE, 'pl_PL');
usort($array, 'strcoll');
echo '<br> Posortowana jako pl_PL : <br>';
var_export($array);
 
 
setlocale(LC_COLLATE, 'Polish');
usort($array, 'strcoll');
echo '<br> Posortowana jako Polish : <br>';
var_export($array);
 
?>
</body></html>
 


A wynik jest taki :
Quote:
Nieposortowana :
array ( 0 => 'Łysiak', 1 => 'Markowski', 2 => 'Nowak', 3 => 'Śliwiński', 4 => 'Antkowiak', 5 => 'Łukaszewicz', 6 => 'Kowalski', 7 => 'Staruch', 8 => 'Szczepaniak', 9 => 'Świdlik', )
Posortowana jako pl_PL.utf8 :
array ( 0 => 'Antkowiak', 1 => 'Kowalski', 2 => 'Markowski', 3 => 'Nowak', 4 => 'Staruch', 5 => 'Szczepaniak', 6 => 'Łukaszewicz', 7 => 'Łysiak', 8 => 'Śliwiński', 9 => 'Świdlik', )
Posortowana jako pl_PL :
array ( 0 => 'Antkowiak', 1 => 'Kowalski', 2 => 'Markowski', 3 => 'Nowak', 4 => 'Staruch', 5 => 'Szczepaniak', 6 => 'Łukaszewicz', 7 => 'Łysiak', 8 => 'Śliwiński', 9 => 'Świdlik', )
Posortowana jako Polish :
array ( 0 => 'Antkowiak', 1 => 'Kowalski', 2 => 'Łukaszewicz', 3 => 'Łysiak', 4 => 'Śliwiński', 5 => 'Świdlik', 6 => 'Markowski', 7 => 'Nowak', 8 => 'Staruch', 9 => 'Szczepaniak', )



----- EDIT -----

Ale problem jest ciekawy, więc wymyśliłem sobie coś takiego :)
Code PHP - [expand]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<?php
 
function sortpopolskawemu($s1, $s2)
{
$search = array('Ę','Ó','Ą','Ś','Ł','Ż','Ź','Ć','Ń','ę','ó','ą','ś','ł','ż','ź','ć','ń');
$replace = array('E','O','A','S','L','Z','Z','C','N','e','o','a','s','l','z','z','c','n');
return strcmp(
str_ireplace($search, $replace, $s1),
str_ireplace($search, $replace, $s2)
);
}
 
function sortpopolsku($s1, $s2)
{
$search = array('Ę','Ó','Ą','Ś','Ł','Ż','Ź','Ć','Ń','ę','ó','ą','ś','ł','ż','ź','ć','ń');
$replace = array('E'.chr(255),'O'.chr(255),'A'.chr(255),'S'.chr(255),
'L'.chr(255),'Z'.chr(254),'Z'.chr(255),'C'.chr(255),
'N'.chr(255),'e'.chr(255),'o'.chr(255),'a'.chr(255),
's'.chr(255),'l'.chr(255),'z'.chr(255),'z'.chr(255),
'c'.chr(255),'n'.chr(255));
return strcmp(
str_ireplace($search, $replace, $s1),
str_ireplace($search, $replace, $s2)
);
}
 
 
echo '<br> Nieposortowana : <br>';
$array=array('Łysiak','Zajdel', 'Markowski','Nowak','Śliwiński','Antkowiak','Łukaszewicz','Kowalski','Staruch', 'Szczepaniak', 'Świdlik');
var_export($array);
 
echo '<br> Posortowana (sortpopolskawemu): <br>';
uasort($array, 'sortpopolskawemu');
var_export($array);
 
echo '<br> Posortowana (sortpopolsku): <br>';
uasort($array, 'sortpopolsku');
var_export($array);
 
?>
</body></html>


A wynik, wydaje mi się, jest całkiem zadowalający.
Quote:
Nieposortowana :
array ( 0 => 'Łysiak', 1 => 'Zajdel', 2 => 'Markowski', 3 => 'Nowak', 4 => 'Śliwiński', 5 => 'Antkowiak', 6 => 'Łukaszewicz', 7 => 'Kowalski', 8 => 'Staruch', 9 => 'Szczepaniak', 10 => 'Świdlik', )
Posortowana (sortpopolskawemu):
array ( 5 => 'Antkowiak', 7 => 'Kowalski', 6 => 'Łukaszewicz', 0 => 'Łysiak', 2 => 'Markowski', 3 => 'Nowak', 4 => 'Śliwiński', 8 => 'Staruch', 10 => 'Świdlik', 9 => 'Szczepaniak', 1 => 'Zajdel', )
Posortowana (sortpopolsku):
array ( 5 => 'Antkowiak', 7 => 'Kowalski', 6 => 'Łukaszewicz', 0 => 'Łysiak', 2 => 'Markowski', 3 => 'Nowak', 8 => 'Staruch', 9 => 'Szczepaniak', 4 => 'Śliwiński', 10 => 'Świdlik', 1 => 'Zajdel', )

Back to top
   
malum
Poziom 19
Poziom 19


Joined: 20 Mar 2005
Posts: 648
Location: Bydgoszcz

Post#7 Post from the author of the topic 17 Mar 2012 16:09   

Re: [PHP] Sortowanie tablic wielowymiarowych


Dzięki wielkie!
Temat uważam za zamknięty!
Back to top
   
Post new topic  This topic is locked      Main Page -> Forum Index -> Programming Generally -> [PHP] Sortowanie tablic wielowymiarowych
Page 1 of 1
Similar topics
[php] Czy ta opinia była przydatna w PHP i MySQL (2)
[PHP][SQL] Problem z dodaniem rekordu do bazy w php (2)
[PHP][SQL] Problem z dodaniem rekordu do bazy w php CZ. II (1)
[PHP]sklep zen cart e commerce kod php okna nowych produktów (3)
php+c+opencv uruchomienie programu przez php nie działa (12)
Logowanie w PHP bez MySQL oraz tworzenie folderów w PHP (11)
[C#] Sortowanie tablic dwuwymiarowych (4)
przekazywanie tablic wielowymiarowych do funkcji (1)
przeszukiwanie tablic wielowymiarowych w C (13)
[PHP] Jak zapisać w PHP plik o katalog wyżej (2)

Page generation time: 0.4 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed