hejka jak mam to posortować
Array
(
[0] => 1
)
Array
(
[0] => 0
)
Array
(
[0] => 1
)
żeby było od największej do najmniejszej.
hejka jak mam to posortować
Array
(
[0] => 1
)
Array
(
[0] => 0
)
Array
(
[0] => 1
)
żeby było od największej do najmniejszej.
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
.
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
Nie mam pojęcia, co właśnie napisałeś.
$arr = [[0 => 1],[0 => 0], [0 => 1]];
usort($arr, function($a, $b) {
return $b[0] <=> $a[0];
});
a jeżeli mam
int(1)
int(0)
int(1)
to jakim sposobem bo sort też nie działa nie wiem czemu
Ależ jak najbardziej sort
działa: https://ideone.com/BCjMew
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
Pokaż kod.
//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.
no bo jeżeli nie ma clienta w grupie to ustawia zmienną na 0 tej grupy
nawet po usunięciu tego if to ten sam błąd jest
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
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
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ć.
to jak mam zrobić żeby te liczby co zwróci mają być posortowane
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ę?
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
<?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.
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
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..
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
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.
to ma tyle wartości ile jest podanych grup w configu