Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: porzadkowanie tablic
Forum PHP.pl > Forum > Przedszkole
Hpsi
Witam znowu mam problema z tablicami tym razem mam sobie taką tablice
Kod
Array
(
    [0] => Array
        (
            [subjects] => 13
            [0] => 13
        )

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

    [2] => Array
        (
            [subjects] => 9
            [0] => 9
        )

    [3] => Array
        (
            [subjects] => 9
            [0] => 9
        )

)

no i musze uporzadkowac ją w ten sposób by wyrzucić powstarzające sie indexy (subjects) o takim samym id... jak to zrobic ?
mike
array_unique()
Poszukaj wśród komentarzy użytkowników, jest tam funkcja do obrabiania takich tablic.
Hpsi
ehh zbytnio nie moge znaleść tej funkcji o ktorej mowisz.:/
nospor
bez przesady. pierwsza z brzegu:

  1. <?php
  2.  
  3. function array_distinct ($array, $group_keys, $sum_keys = NULL, $count_key = NULL){
  4.   if (!is_array ($group_keys)) $group_keys = array ($group_keys);
  5.   if (!is_array ($sum_keys)) $sum_keys = array ($sum_keys);
  6.  
  7.   $existing_sub_keys = array ();
  8.   $output = array ();
  9.  
  10.   foreach ($array as $key => $sub_array){
  11.    $puffer = NULL;
  12.    #group keys
  13.    foreach ($group_keys as $group_key){
  14.      $puffer .= $sub_array[$group_key];
  15.    }
  16.    $puffer = serialize ($puffer);
  17.    if (!in_array ($puffer, $existing_sub_keys)){
  18.      $existing_sub_keys[$key] = $puffer;
  19.      $output[$key] = $sub_array;
  20.    }
  21.    else{
  22.      $puffer = array_search ($puffer, $existing_sub_keys);
  23.      #sum keys
  24.      foreach ($sum_keys as $sum_key){
  25.        if (is_string ($sum_key)) $output[$puffer][$sum_key] += $sub_array[$sum_key];
  26.      }
  27.      #count grouped keys
  28.      if (!array_key_exists ($count_key, $output[$puffer])) $output[$puffer][$count_key] = 1;
  29.      if (is_string ($count_key)) $output[$puffer][$count_key]++;
  30.    }
  31.   }
  32.   return $output;
  33. }
  34.  
  35. //uzycie:
  36.  
  37. $array = array();
  38. $array[0]['subjects'] = 1;
  39. $array[0][0] = 1;
  40. $array[1]['subjects'] = 2;
  41. $array[1][0] = 2;
  42. $array[2]['subjects'] = 3;
  43. $array[2][0] = 3;
  44. $array[3]['subjects'] = 3;
  45. $array[3][0] = 3;
  46.  
  47. $array = array_distinct ($array, array('subjects'));
  48.  
  49.  
  50. ?>


nastepnym razem szukaj lepiej, bo mogą się warny posypac za lenistwo tongue.gif
Hpsi
hmm.. no fakt na pierwsza nie zwrocilem uwagi.. wybacz nospor.

natomiast co do mike_mech na poziomie zapytania ? hmm co masz na mysli jak w zapytaniu do bazy kazac mu tylko brac pod uwage tylko te które sa pierwszy raz by np jak na moim przykladzie byla jedna "9" a nie dwie ?
kszychu
SELECT DISTINCT .....
mike
Cytat(Hpsi @ +2005-09-22 11:51:43)
natomiast co do mike_mech na poziomie zapytania ? hmm co masz na mysli jak w zapytaniu do bazy kazac mu tylko brac pod uwage tylko te które sa pierwszy raz  by np jak na moim przykladzie byla jedna "9" a nie dwie ?

To ja troszkę wyjaśnię. Jest to odpowiedź na posta którego usunąłem ( bo nospor był o 48 sek. szybszy ).

A odnośnie pytania. Tak. O to chodzi. kszychu CI podał czego szukać.
Hpsi
dziekuje slicznie za pomoc.
DISTINCT nigdy nie uzywalem i nie wiedzialem ze jest smile.gif - no cóz czlowiek uczy sie cale zycie. dziekuje jeszcze raz mike, krzychu i nospor na pomoc. Sorki za 'objaw lenistwa' jesli chodzi o przegladanie tamtego ale ogolnie patrzlem na wiekosc procz pierwszych ... smile.gif
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.