Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odwołanie do tablicy array
Forum PHP.pl > Forum > Przedszkole
casperii
Poniżej kod, wszystko niby ok działa, ale pojawia się problem z 2 "rzeczami"
1 - nie ma sortowania (najmniejszy / największy element) ,próbowałem z ksort / asort , ale to nie problem mogę sortować liczby przy zapisie do bazy.
2 - jeżeli identyfikator jest większy niż 9 pojawia się problem, 10 - traktuje jak 1

poniżej kod:

  1. foreach($sql->fetchAll() as $arr){
  2. $myArr[] = array(
  3. $arr['id'] => $arr['name']
  4. );
  5. }
  6.  
  7. try {
  8. while($row = $sql->fetch(PDO::FETCH_ASSOC)){
  9.  
  10. $translate = '';
  11. $explodeNr = explode(',', $row['idc']);
  12.  
  13. foreach($explodeNr as $ex){
  14. $translate .= $myArrL[$ex[0]-1][$ex[0]] . ', ';
  15. }
  16. echo $translate;
  17. }
nospor
Jeden z bardziej chaotycznie (nie)opisanych problemow.

Co ci traktuje 10 jak 1? Zrozum, my nie wiemy co to za dane, w jakim formacie i co ci co traktuje. W myslach nie czytamy tongue.gif
Jesli zas miales na mysli, ze baza podczas sortowania traktuje ci 10 jak 1 to pole w bazie ma byc typy LICZBOWEGO a nie TEKSTOWEGO
Salvation
A dlaczego nie posortujesz tego na poziomie zapytania?
casperii
@nospor , przecież powyżej masz kod pokazany, taki mądry człowiek jak Ty i sobie nie poradził , ok wyjawię sekret w sposób bardziej logiczny / łopatologiczny.

w tablicy $myArr[] przechowuje identyfikator i nazwę z tabeli "X"
1 - na lato
2 - na jesień
3 - na zime
4 - na wiosnę

następnie odpytuje tabele "Y" i wyświetlam wyniki pętlą while
nazwa | kat
1. seksowna kiecka , 1,2,3,4 (czyli ta zwiewna kiecka może być na lato , na jesień, na zimę , na wiosnę smile.gif

jak widać w bazie przechowuje kolumnę kat jako varchar o wartości 1,2,3,4 więc zastosowałem rozbicie za pomocą explode i "przetłumaczenie rozbitego członu na język bardziej zrozumiały dla użytkownika.

  1. foreach($explodeNr as $ex){
  2. $translate .= $myArrL[$ex[0]-1][$ex[0]] . ', ';
  3. }



print_r($myArr);

  1. Array
  2. (
  3. [0] => Array
  4. (
  5. [1] => na lato
  6. )
  7.  
  8. [1] => Array
  9. (
  10. [2] => na jesień
  11. )
  12.  
  13. [2] => Array
  14. (
  15. [3] => na zime
  16. )
  17.  
  18. [3] => Array
  19. (
  20. [4] => na wiosne
  21. )
  22.  
  23. )
viking
Po kiego tworzysz podtablicę dla tych wartości? Wypchnij to poziom wyżej a wtedy masz prosta sprawę z wyszukiwaniem.
casperii
Cytat(viking @ 7.06.2022, 20:33:45 ) *
Po kiego tworzysz podtablicę dla tych wartości? Wypchnij to poziom wyżej a wtedy masz prosta sprawę z wyszukiwaniem.


co znaczy "wypchnij" to wyżej?
viking
Powinieneś się domyślić wink.gif
  1. $myArr = [];
  2. foreach($sql->fetchAll() as $arr){
  3. $myArr[(int) $arr['id']] = $arr['name'];
  4. }
trueblue
Cytat(viking @ 8.06.2022, 06:47:45 ) *
  1. $myArr = [];
  2. foreach($sql->fetchAll() as $arr){
  3. $myArr[(int) $arr['id']] = $arr['name'];
  4. }

Jeśli to PDO, to można tak:
  1. $myArr = $sql->fetchAll(PDO::FETCH_KEY_PAIR);

P.S. Zapytanie ma wybierać tylko kolumny id oraz name.
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.