); function mysort1 ($x, $y) { return ($x['M'] < $y['M']); }
I potrzebuje posortować najpierw po M a potem gdy istnieje MB to to MB ale tak gdy jest tylko M to M jest wyżej Czyli tablica jaką chce uzyskać
);
Proszę o pomoc.
); function mysort1 ($x, $y) { return ($x['M'] < $y['M']); }
);
function cmp($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; }
Trickiem jest tu konieczność sprawdzenia tylko jednego elementu jeśli choć jeden z nich nie posiada MB. Jeśli MB nie ma w $a to on idzie wyżej, jeśli nie ma go $b, to on idzie wyżej, a jeśli nie mają go oba to nie ma znaczenia co jak będzie w kolejności, bo są w takim wypadku oba równe. Stąd od razu z góry zdecydowałem, że jeśli nie ma $a['MB'] to zwróci zawsze, iż $a jest większy, bez sprawdzania $b. Takie uproszczenie logiczne. Sami zobaczcie...
function cmp($a, $b) { if ($a['M'] == $b['M']) { //gdy M równe to będzie konieczne dodatkowe sortowanie... if( array_key_exists( $a['MB'] && array_key_exists( $a['MB'] ) ) { //sprawdzanie czy oba elementy mają MB... return ( $a['MB'] < $b['MB'] ) ? -1 : 1; //jeśli oba mają MB to sortujemy po nich } else { // jeśli jedno nie będzie miało MB to ono pójdzie wyżej... return ( !array_key_exists( $a['MB'] ) ? 1 : -1 ); //sprawdzenie istnienia MB - tu trzeba logiki... wyjaśnię ją pod kodem :) WYJAŚNIENIE NIŻEJ } } else { // gdy nie to proste porówanie dla M wskaże co gdzie :) return ( $a['M'] < $b['M'] ) ? -1 : 1; } };
$a['klucz'] = NULL;
); function cmp($a, $b) { if ($a['Punkty'] == $b['Punkty']) { return ( $a['mecze_bezposrednie']['LM'] < $b['mecze_bezposrednie']['LM'] ) ? -1 : 1; } else { } } else { return ( $a['Punkty'] > $b['Punkty'] ) ? -1 : 1; } }
function cmp($a, $b) { if ($a['punkty'] == $b['punkty']) { return ( $a['mecze_bezposrednie']['LM'] < $b['mecze_bezposrednie']['LM'] ) ? -1 : 1; } elseif(array_key_exists('mecze_bezposrednie', $a) && array_key_exists('mecze_bezposrednie', $b) && $a['mecze_bezposrednie']['LM'] == $b['mecze_bezposrednie']['LM']){ return ( $a['mecze_bezposrednie']['PktB'] < $b['mecze_bezposrednie']['PktB'] ) ? -1 : 1; } elseif(array_key_exists('mecze_bezposrednie', $a) && array_key_exists('mecze_bezposrednie', $b) && $a['mecze_bezposrednie']['LM'] == $b['mecze_bezposrednie']['LM'] && $a['mecze_bezposrednie']['PktB'] == $b['mecze_bezposrednie']['PktB']){ return ( $a['mecze_bezposrednie']['BRB'] < $b['mecze_bezposrednie']['BRB'] ) ? -1 : 1; } elseif(array_key_exists('mecze_bezposrednie', $a) && array_key_exists('mecze_bezposrednie', $b) && $a['mecze_bezposrednie']['LM'] == $b['mecze_bezposrednie']['LM'] && $a['mecze_bezposrednie']['PktB'] == $b['mecze_bezposrednie']['PktB'] && $a['mecze_bezposrednie']['BRB'] == $b['mecze_bezposrednie']['BRB']){ return ( $a['mecze_bezposrednie']['BBZ'] < $b['mecze_bezposrednie']['BBZ'] ) ? -1 : 1; } else { } } else { return ( $a['punkty'] > $b['punkty'] ) ? -1 : 1; } }