Jak posortować dwuwymiarową tablicę?

0

hejka jak mam to posortować

Array
(
[0] => 1
)
Array
(
[0] => 0
)
Array
(
[0] => 1
)

żeby było od największej do najmniejszej.

0

Co to znaczy "od największej do najmniejszej"?
Chcesz posortować rosnąco w zależności od pierwszej liczby znajdującej się w każdej z tablic, tak? (dla porównania: można jeszcze sortować po kluczach)

Poczytaj o usort.

0
Patryk27 napisał(a):

Co to znaczy "od największej do najmniejszej"?
Chcesz posortować rosnąco w zależności od pierwszej liczby znajdującej się w każdej z tablic, tak? (dla porównania: można jeszcze sortować po kluczach)

Poczytaj o usort.

właśnie z tym mam błędy ciągle
i dopiero po zrobieniu explode i na array rozdzieliłem przestały wyskakiwać ale nie sortuje się
normalnie to zwraca 1 0 1

0

Nie mam pojęcia, co właśnie napisałeś.

0
$arr = [[0 => 1],[0 => 0], [0 => 1]];

usort($arr, function($a, $b) {
    return $b[0] <=> $a[0];
});
0

a jeżeli mam

int(1)
int(0)
int(1)

to jakim sposobem bo sort też nie działa nie wiem czemu

0

Ależ jak najbardziej sort działa: https://ideone.com/BCjMew

0

PHP Warning: sort() expects parameter 1 to be array, integer given in x on line 21
int(1)
PHP Warning: sort() expects parameter 1 to be array, integer given in x on line 21
int(0)
PHP Warning: sort() expects parameter 1 to be array, integer given in x on line 21
int(1)

u mnie t taki błąd w sorcie

0

Pokaż kod.

0
<?php function x () { global $tsAdmin,$config; $desc = 'top gildi'; $number = 1; foreach($config['function']['x']['groups'] as $groups) { $clients_from = $tsAdmin->getElement('data', $tsAdmin->serverGroupClientList($groups, false)); $a = count($clients_from); if(!isset($clients_from[0]['cldbid'])){ $a = 0; } $groups_name = get_group_name($groups); $desc .= $number.' '.$groups_name.' '.$a[0].'\n'; $number++; sort($a); var_dump($a); } $og['channel_description'] = $desc; $tsAdmin->channelEdit(4366,$og); } ?>
2
//nadajesz stale wartość 0 dla zmiennej a.
 $a = 0;
    }
    $groups_name = get_group_name($groups);

    $desc .= $number.' '.$groups_name.' '.$a[0].'\n';
    $number++;
//sortujesz zmienną $a, której wcześniej nadałeś wartość 0 i która na pewno nie jest tablicą
    sort($a);

Zobacz komentarze.

0

no bo jeżeli nie ma clienta w grupie to ustawia zmienną na 0 tej grupy

0

nawet po usunięciu tego if to ten sam błąd jest

0
Kuba Rybczyński napisał(a):

nawet po usunięciu tego if to ten sam błąd jest

A dlaczego w takim razie to ma być tablicą?

$a = count($clients_from);

http://php.net/manual/pl/function.count.php
Ale mi wstyd, że to przeoczyełem

0

po to ponieważ liczy osoby z grupy ale
if(!isset($clients_from[0]['cldbid'])){
$a = 0;
}
jest po to żeby zapobiec błędowi bo przy 0 osob w grupie wyświetla 1 i to jest po to żeby wyświetlało to 0

0

ok, spokojnie. Zrób sobie var_dump() zmiennych po kolei. Tak napisany kod będzie Ci się wywalał krop po kroku. Robisz obejście do obejścia.
Zobacz jakie wartości masz w zmiennej $a po kolei. To nie są tablice. Zarówno count zwrócić CI inteager, jak i ustawienie na sztywno wartości w tym if też da inteagera. Czyli nie ma czego sortować.

0

to jak mam zrobić żeby te liczby co zwróci mają być posortowane

0

Przemyśl krop po kroku co chcesz zrobić i co uzyskać. No tu CI raczej mało kto pomoże. Gdzieś się zaciąłeś i nie przemyślałeś co robisz. Jak można sortować jedną liczbę?

0

to count liczy kilka grup i zwraca online osoby z kilku grup w tym przypadku 1 grupa ma online 1 druga 0 a trzecia 1 i to musze posortować żeby było od największej do najmniejszej

0
<?php
      
// mamy 3 grupy klientów
$clients1 = array('xxx','yy');
$clients2 = array('xxx','yy','aaa');
$clients3 = array();
//mamy tablicę wielowymiarową z grupami klientów
$groupOfClients = array($clients1,$clients2,$clients3);

//Tworzymy zmienną będącą tablicą w ceulu umieszczenia w niej wyników sortowania poszczególnych grup
$arrayOfCounts = array();
// teraz pętla po grupie klientów
foreach( $groupOfClients as $group){
    
    // do zmiennej $numberOfCients przypisujemy wartości. To jest lokalna zmienna występująca tylko w pętli
    // to nie będzie tablica, count nie zwróci tablicy
    $numberOfClients = count($group);
    // zmienną $numberOfClients przypisujemy do utworzonej wcześniej pustej tablicy
    // zwróć uwagę na kwadratowe nawiasy, dzięki temu przypisanie nastąpi do następnego klucza
    $arrayOfCounts[]=$numberOfClients;
}
//Po wyjśiu z pętli mamy nie posortowaną tablicę
print_r($arrayOfCounts);
// wykonujemy jej sortowanie
sort ($arrayOfCounts);
// gotowe
print_r($arrayOfCounts);

Zobacz czy to CI coś pomoże i wyjaśni.

0

to wtedy zwraca to

array(1) {
[0]=>
int(1)
}
array(2) {
[0]=>
int(1)
[1]=>
int(0)
}
array(3) {
[0]=>
int(1)
[1]=>
int(0)
[2]=>
int(1)
}
array(3) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(1)
}

jak zrobie na takiej zasadzie,
znajomy do mnie żebym jakimś sortowaniem bombelkowym spróbował ale pierwszy raz o tym słysze

0
Kuba Rybczyński napisał(a):

to wtedy zwraca to

array(1) {
[0]=>
int(1)
}
array(2) {
[0]=>
int(1)
[1]=>
int(0)
}
array(3) {
[0]=>
int(1)
[1]=>
int(0)
[2]=>
int(1)
}
array(3) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(1)
}

jak zrobie na takiej zasadzie,
znajomy do mnie żebym jakimś sortowaniem bombelkowym spróbował ale pierwszy raz o tym słysze

Najprawdopodobniej nie wychodzisz z wykonywanej pętli. skoro masz 3 razy wynik. Przeczytaj krok po kroku jeszcze raz co Ci opisałem i spróbuj zastosować u siebie..

0

kiedy zrobie dokładnie tak jak ty to zwraca mi tylko liczbe 1 a to musi być wykonane w pętli żeby zrobiło to na każdej liczbie

0
Kuba Rybczyński napisał(a):

kiedy zrobie dokładnie tak jak ty to zwraca mi tylko liczbe 1 a to musi być wykonane w pętli żeby zrobiło to na każdej liczbie

Przeczytaj dokumentację funkcji sort : http://docs.php.net/manual/en/function.sort.php
Sama funkcja zwraca wartość bool czyli 0 lub 1, pewnie więc(bo nie pokazałeś kodu) do swojej zmiennej z tablicą przypisujesz wynik wykonania funkcji sort.

$array = [5,8,3,7,25];
sort($array);
var_dump($array);
$result = sort($array);
var_dump($result);

, Sortowanie to już jest "rodzaj pętli"(niech nikt mnie nie zabije za taki opis), wykonujący się na całej tablicy. Jeśli więc dasz to w pętli dodatkowo to będziesz wykonywał to sortowanie tyle razy ile wykona się pętla, to zwolni działanie całej aplikacji i niepotrzebnie zajmie procesor. Jak masz 3 wartości w tablicy to nie zauważysz różnicy.

0

to ma tyle wartości ile jest podanych grup w configu

1 użytkowników online, w tym zalogowanych: 0, gości: 1