Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z kluczem tablicy
Forum PHP.pl > Forum > XML, AJAX
bobens_83
Witam drodzy PHP'owcy.

Nurtuje mnie pewna sytuacja ... mianowicie:

1) W przypadku pierwszym ładuję dane do tablicy w sposób: (string) klucz => (string) wartość

  1. $atest = array();
  2. $key = '';
  3. for ($x = 0; $x < 500; $x++) {
  4. $key .= "X";
  5. $value = "test" . strlen($key);
  6. $atest[$key] = $value;
  7. }
  8. echo $atest['XXXX'];


echo $atest['XXXX']; zwraca 'test4'

2) W przypadku drugim również ładuję tablicę: (string) klucz => (string) tzn: $acats[$cat_id] = $cat_txt;

  1. $acats = array();
  2. $cat_id = ""; // zmienna jako string
  3. $cat_txt = ""; // zmienna jako string
  4. $xml = simplexml_load_file('structure.xml');
  5. foreach ($xml->children() as $cat) {
  6. $cat_id = $cat['id']; // przypisanie do zmiennej typu string
  7. $cat_txt = $cat['txt']; // -||-
  8. $acats[$cat_id] = $cat_txt; // ERROR
  9. }


i otrzymuje trzykrotne (3 - tyle jest childrenów $cat w $xml, wartości nie powtarzają się)...
Warning: Illegal offset type in C:\wamp\www\test01\index.php on line 55


Na pierwszy rzut oka sutuacje (tzn sposób napełniania tablicy) wydają mi się analogiczne, czemu więc drugi sposób nie działa?

Będę wdzięczny za podpowiedzi, pozdrawiam. P.
wookieb
  1. var_dump($cat_id);

przed uzyciem tej zmiennej jako klucza i dostaniesz odpowiedź.
bobens_83
Git. Należało zamienić:
  1. $cat_id = $cat['id'];
  2. $cat_txt = $cat['txt'];

na:
  1. $cat_id = (string)$cat['id'];
  2. $cat_txt = (string)$cat['txt'];


Dzięki za pomoc, oczywiście daje za nią punkta winksmiley.jpg
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.