Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z funkcją count(), błąd w zliczaniu ilości elementów w tablicy
sticker
post
Post #1





Grupa: Zarejestrowani
Postów: 611
Pomógł: 19
Dołączył: 28.02.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam wszystkich, wlasnie jestem w trakcie pisania skryptu przetwarzającego XML'a i potrzebuje zliczać ilość elementów w tablicy asocjacyjnej wielowymiarowej. Do zliczanie elementów w tablicy wykorzystuje funkcję
  1. <?php
  2. ?>

Funkcja owszem działa ale nie w sposób całkiem dla mnie nieprzwidywalnym. Postram sie to przybliżyć na przykładzie:
oto kawalek tablicy w której następuje zliczanie:
  1. <pre>
  2. [AUTHORS] => Array
  3. (
  4. [AUTHOR] => Array
  5. (
  6. [0] => Array
  7. (
  8. [FIRSTNAME] =>
  9. [LASTNAME] => Britnej Spirs
  10. )
  11. [1] => Array
  12. (
  13. [FIRSTNAME] =>
  14. [LASTNAME] => Mała donna
  15. )
  16. )
  17. )
  18. </pre>

potrzebuje policzyć ilość wystąpień AUTHOR robie to w ten sposób:
  1. <?php
  2. count( $result['AUTHORS']['AUTHOR'] )
  3. ?>
i otrzymuje wynik równy 2 (czyli wszystko ok)
i kolejne podejście natrafiam na taką tablice:
  1. <pre>
  2. [AUTHORS] => Array
  3. (
  4. [AUTHOR] => Array
  5. (
  6. [FIRSTNAME] =>
  7. [LASTNAME] => Britnej Spirs
  8. )
  9. )
  10. </pre>

robie:
  1. <?php
  2. count( $result['AUTHORS']['AUTHOR'] )
  3. ?>

i dostaje wynik równy 2.
Pytanie jest dlaczego tak sie dzieje ?
Oczywiście można to obejśc porównując liczbę
  1. <?php
  2. count( $result['AUTHORS']['AUTHOR'] ) == count( $result['AUTHORS']['AUTHOR'], COUNT_RECURSIVE )
  3. ?>
i na tej podstawie wnioskować czy coś wynik funkcji zwraca ilość elementów w danej tablicy czy liczbę elementów w zawartych w podtablicy. Ale wolałbym znaleźć jakieś prostsze rozwiązanie i zrozumieć dlaczego tak sie dzieje.

Dzięki z góry za odpowiedź
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 08:45