Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyświetlanie wartości tablicy w określonej kolejności
Forum PHP.pl > Forum > Przedszkole
AdamT
Mam taki problem z poniższym kodem:
  1. <?php
  2. // To pobieramy z formularza:
  3. // $string -> {"key1":"","key2":"1","key3":"false","key4":"true"}
  4.  
  5. // Kasujemy z ciągu pierwszy i ostatni znak - czyli { i }
  6. $string = substr($string, 1, -1);
  7. // Tworzymy tablicę ze stringa gdzie po lewej stronie znaku : to klucze a po prawej to wartości
  8. $array = array_chunk(preg_split('/(\:|,)/', $string), 2);
  9. $result = array_combine(array_column($array, 0), array_column($array, 1));
  10.  
  11. // Sortuję tablicę - może nie potrzebnie
  12. asort($result);
  13.  
  14. // Wykonuję petlę, która ma za zadanie sprawdzić poniższe warunki
  15. foreach ($result as $key_name => $value) {
  16. echo "DEBUG".$key_name." ma wartość: ".$value."\n";
  17. // Dotąd działa dobrze :)
  18.  
  19. //1. Wyświetl wyniki tylko tam gdzie wartości są liczbowe
  20. if (is_numeric ($value))
  21. echo $key_name." to ma: ".$value;
  22.  
  23. //2. Wyświetl wyniki tylko tam gdzie wartość jest "true"
  24. if ($value == "true")
  25. echo $key_name." ma jest - ".$value;
  26.  
  27. //3. Na koniec wyśweitl wyniki tam gdzie warość jest "false"
  28. if ($value == "false")
  29. echo $key_name." nie nie jest ".$value;
  30.  
  31. }
  32.  
  33. // Wyniki w postaci tabeli oddzielonej 3 headerami - tabela 5 kolumn
  34. ?>
  35.  
  36. <table id="ajdi">
  37. <th> Header 1</th>
  38. <tr>
  39. <td> <?php echo $key_name." ma ".$value;?></td>
  40. <td> <?php echo $key_name." ma ".$value;?></td>
  41. <td> <?php echo $key_name." ma ".$value;?></td>
  42. <td> <?php echo $key_name." ma ".$value;?></td>
  43. <td> <?php echo $key_name." ma ".$value;?></td>
  44. </tr>
  45. <th> Header 2</th>
  46. <tr>
  47. <td> <?php echo $key_name." jest ".$value;?></td>
  48. <td> <?php echo $key_name." jest ".$value;?></td>
  49. <td> <?php echo $key_name." jest ".$value;?></td>
  50. <td> <?php echo $key_name." jest ".$value;?></td>
  51. <td> <?php echo $key_name." jest ".$value;?></td>
  52. </tr>
  53. <th> Header 3</th>
  54. <tr>
  55. <td> <?php echo $key_name." nie jest ".$value;?></td>
  56. <td> <?php echo $key_name." nie jest ".$value;?></td>
  57. <td> <?php echo $key_name." nie jest ".$value;?></td>
  58. <td> <?php echo $key_name." nie jest ".$value;?></td>
  59. <td> <?php echo $key_name." nie jest ".$value;?></td>
  60. </tr>
  61. </table>
  62.  


Etap 1 na którym poległem to sprawdzanie wartości w tablicy sad.gif

  1. //1. Wyświetl wyniki tylko tam gdzie wartości są liczbowe
  2. if (is_numeric ($value))
  3. echo $key_name." to ma: ".$value;

To mi nie zwraca nic.. a chciałbym, żeby zwróciło i wyświetliło $key1 -> '' i $key2 -> '1' bo taki jest warunek... co robię źle ?
sabat24
Po pierwsze string, który otrzymujesz, to jest JSON, więc zamiast

  1. // Kasujemy z ciągu pierwszy i ostatni znak - czyli { i }
  2. $string = substr($string, 1, -1);
  3. // Tworzymy tablicę ze stringa gdzie po lewej stronie znaku : to klucze a po prawej to wartości
  4. $array = array_chunk(preg_split('/(\:|,)/', $string), 2);
  5. $result = array_combine(array_column($array, 0), array_column($array, 1));


Zrób po prostu
  1. $result = json_decode($string, TRUE);
AdamT
Pięknie dziękuję za podpowiedź smile.gif Teraz tylko się pomęczyć, żeby to ładnie do tabelki wpakować biggrin.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.