Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]tablica i indeks
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Mam problem - nie wiem dlaczego tworzy mi tylko indeks zerowy w następującej sytuacji
  1. //połaczenie z bazą...
  2. //przekazanie różnej liczby zmiennych z innego pliku
  3. $id=$_POST['wiz'];
  4. $ile=count($id_pac);
  5. foreach($id as $b=>$val)
  6. $sql2='select concat(nazwisko,\' \',imie) as osoba, concat(miasto,\', \',adres) as adres,
  7. pesel from pacjenci where id_pac='
  8. .$val.'';
  9. //echo $sql2."<br/>";
  10. $rez=mysqli_query($mysqli,$sql2) or die("Błąd zapytania");
  11. while($rekord=mysqli_fetch_array($rez, MYSQLI_ASSOC)){
  12. $osoba1=$rekord['osoba'];
  13. $adres1=$rekord['adres'];
  14. $pesel=$rekord['pesel'];
  15. if(strlen(utf8_decode($osoba1))>20){
  16. $os=explode(" ", $osoba1);
  17. $osoba="$os[0]\n$os[1]$os[2]";
  18. }else{
  19. $osoba=$osoba1;
  20. }
  21. if(strlen(utf8_decode($adres1))>20){
  22. $ad=explode(" ", $adres1);
  23. $adres="$ad[0] $ad[1]\n$ad[2] $ad[3] $ad[4] $ad[5] $ad[6]";
  24. }else{
  25. $adres=$adres1;
  26. }
  27. $dane_os_con="$osoba\n$adres\nPESEL: $pesel";
  28. $dane_os=array(iconv("utf-8", "iso-8859-2", $dane_os_con));
  29. var_dump($dane_os);
  30. }
  31. }

Przy var_dump($dane_os) dostaję taki zapis
array
0 => string 'tutaj pełne dane osobowe z bazy klienta' (length=60)
array
0 => string 'tutaj pełne dane osobowe z bazy klienta' (length=69)
Zaznaczam, że dane są inne. Mnie generalnie chodzi o to, dlaczego indeks tabeli nie tworzy się na zasadzie inkrementacji tylko wszędzie jest 0.
nospor
Mówisz o tym:
$dane_os=array(iconv("utf-8", "iso-8859-2", $dane_os_con));
?
Za każdym razem nadpisujesz zmienną to masz zawsze ostatni wynik - logiczne.
jacusek
No właśnie, ale jak to zmienić, bo teraz to wygląda w ten sposób, ze jeżeli nie byłoby
  1. $dane_os=array(iconv("utf-8", "iso-8859-2", $dane_os_con));

tylko same $dane_os bez array to wszystkie wyniki byłyby tylko stringami. W takim przypadku dostaję coś takiego
string 'tutaj pełne dane osobowe z bazy klienta' (length=60)
string 'tutaj pełne dane osobowe z bazy klienta' (length=69)
Oczywiście jak w poprzednim przypadku dane są różne.
W takim razie - bo już to kombinowałem w różny sposób czy da się mając zmienną nie tabelową, tylko złożoną z kilku stringów zmienić ją na tabelę?

Próbowałem coś takiego
  1. $dane_os_con="$osoba\n$adres\nPESEL: $pesel;";
  2. $dane_os_exp=(iconv("utf-8", "iso-8859-2", $dane_os_con));
  3. $dane_os=explode(";", $dane_os_exp);
  4. var_dump($dane_os);

ale wyszły już kompletne głupoty
nospor
Skoro operujesz na tablicach, to czemu w manualu się z nimi nie zapoznasz tylko strzelasz??

$tablica[] = 'nowadana';

I już. Ale to wszystko jest w manualu opisane.
jacusek
wymyśliłem na koniec coś takiego
  1. for($a=0;$a<$ile;$a++){
  2. $dane_os=array($a=>$dane_os_exp);
  3. }

Ale to też nie daje pożądanego rezultatu, bo indeksem tablicy jest maksymalna liczba uzyskana z pętli for i dostaję taki sam komunikat jak poprzednio z tą różnicą, że zamiast 0 mam właśnie tą maksymalną liczbę.
nospor
blink.gif
Przecież w poprzednim poście napisałem ci kod, który robi dodawanie do tablicy. Czemu nie czytasz co się do ciebie pisze??
jacusek
Ok. Dzięki. Idiotycznie wywoływałem var_dumpa w pętli, a wystarczyło zrobić
  1. $tab[]=$dane_os;

i później wywołać poza pętlą. I wszystko gra.
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.