Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [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
 
Start new topic
Odpowiedzi (1 - 8)
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


--------------------
Nie udzielam pomocy poprzez PW
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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
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.


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
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. }


--------------------
I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 10:19