Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] static z tablicą
-123123-
post
Post #1





Goście







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 ?
Go to the top of the page
+Quote Post
gothye
post
Post #2





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


ponieważ wywołujesz nie odpowiedni klucz w tablicy
Go to the top of the page
+Quote Post
-Gość-
post
Post #3





Goście







a jak wywołać pierwszy klucz z tablicy nieznając jego nazwy?
Go to the top of the page
+Quote Post
kefirek
post
Post #4





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


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. ?>


Ten post edytował kefirek 13.02.2012, 11:38:29
Go to the top of the page
+Quote Post
Sephirus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


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. ?>


Ten post edytował Sephirus 13.02.2012, 11:55:54
Go to the top of the page
+Quote Post
batman
post
Post #6





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




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 to the top of the page
+Quote Post
-Gość-
post
Post #7





Goście







batman - tylko że tak zwróci tylko wartość, a jak zwrócić klucz?
Go to the top of the page
+Quote Post
Sephirus
post
Post #8





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


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


Ten post edytował Sephirus 13.02.2012, 13:49:31
Go to the top of the page
+Quote Post
batman
post
Post #9





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




O tak:

  1. public static function getAll()
  2. {
  3. reset(self::$all);
  4. return array(key(self::$all) => current(self::$all));
  5. }
Go to the top of the page
+Quote Post

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: 22.08.2025 - 17:55