Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] static z tablicą
Forum PHP.pl > Forum > Przedszkole
123123
Kod
class Foo
{
    private static $all;
    public function __construct()
    {
        self::$all = array('zxc'=>'zx' , 'asd'=>'ad');    
    }
    
    public static function getAll()
    {
        return self::$all[0];
    }
}//end class


Ktoś może mi wyjaśnić dlaczego nie jest zwracana wartość 'zxc' ? Przy wywołaniu Foo::getAll ?
gothye
ponieważ wywołujesz nie odpowiedni klucz w tablicy
Gość
a jak wywołać pierwszy klucz z tablicy nieznając jego nazwy?
kefirek
O to ci chodzi ?
  1. <?php
  2. class Foo
  3. {
  4. private static $all;
  5.  
  6. public function __construct()
  7. {
  8. self::$all = array('zxc'=>'zx', 'asd'=>'ad');
  9. }
  10.  
  11. public static function getAll()
  12. {
  13. return self::$all;
  14. }
  15. }//end class
  16.  
  17. $obj = new Foo();
  18. echo current($obj::getAll());
  19.  
  20. ?>
Sephirus
Albo (korzystając ze skryptu powyżej) żeby już zwracało zawsze pierwsze bez zabawy

  1. <?php
  2. class Foo
  3. {
  4. private static $all;
  5.  
  6. public function __construct()
  7. {
  8. self::$all = array('zxc'=>'zx', 'asd'=>'ad');
  9. }
  10.  
  11. public static function getAll()
  12. {
  13. reset(self::$all);
  14. return current(self::$all);
  15. }
  16. }//end class
  17.  
  18. $obj = new Foo();
  19. echo $obj::getAll();
  20.  
  21. ?>
batman
Pomijając fakt, że nazwa getAll jest co najmniej myląca, Twój kod działa poprawnie. Jeśli chcesz zwrócić wartość pierwszego elementu tablicy nie znając jego klucza możesz zrobić tak:

  1. public static function getAll()
  2. {
  3. reset(self::$all);
  4. return current(self::$all);
  5. }


Możesz również posiłkować się funkcją array_shift, przy czym musisz mieć świadomość, że zdejmuje ona pierwszy element z tablicy i go zwraca. Więcej szczegółów doczytasz w manualu.
Gość
batman - tylko że tak zwróci tylko wartość, a jak zwrócić klucz?
Sephirus
key()

  1. reset($array); // resetuje wskaźnik pozycji tablicy na pierwszy
  2. current($array); // zwraca wartość pod aktualnym wskaźnikiem pozycji tablicy
  3. key($array); // zwraca "klucz"/"indeks" pod aktualnym wskaźnikiem pozycji tablicy
batman
O tak:

  1. public static function getAll()
  2. {
  3. reset(self::$all);
  4. return array(key(self::$all) => current(self::$all));
  5. }
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.