Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]obiekty/tablice asocjacyjne
Forum PHP.pl > Forum > Przedszkole
flashdev
Temat dla Was pewnie na poziomie przedszkola, więc tutaj go umieszczam.
Proste pytanie dla kogoś kto w tym siedzi.

Czy można w php tworzyć obiekty tak jak w as/js?

Chcę utworzyć np. tablicę obiektów.

W js/as zrobie to w taki sposób:
Kod
var tab = [];
tab[0] = {x: 0, y:0 , zmienna:"b"};
tab[1] = {x: 0, y:0 , zmienna:"b"};
...


W php potrafię to zrobić tak:
  1. <?php
  2. $tab = array();
  3. $tab[0] = array(0, 0 , "b");
  4. $tab[1] = array(0, 0 , "b");
  5. ...
  6. ?>


Ale czy da się czytelniej?
Tak żebym mógł się odwoływać nie jak do tablicy dwuwymiarowej tylko po konkretnej nazwie (x, y, name).
pgrzelka
google.pl -> stdclass
flashdev
W sumie to nie rozumiem w czym miało by mi to pomóc. Ale poradziłem sobie w inny sposób, więc podam rozwiązanie, które może komuś się przyda:

  1. <?php
  2. class myObject{
  3.    public $x;
  4.    public $y;
  5.    function __construct($a, $b){
  6.        $this -> x = $a;
  7.        $this -> y = $b;
  8.    }
  9. }
  10.  
  11. $myTab = array();
  12. $myTab[0] = new myObject(0, 0);
  13. $myTab[1] = new myObject(0, 0);
  14. ...
  15. echo $myTab[...] -> x;
  16. echo $myTab[...] -> y;
  17. ?>
pgrzelka
  1. <?php
  2. $myTab[0] = new stdClass();
  3. $myTab[0] -> x = 4;
  4. $myTab[0] -> y = 5;
  5. ?>

jest 19.00, wstałem pół godziny temu, nie gwarantuje że to działa
erix
Cytat
Ale czy da się czytelniej?
Tak żebym mógł się odwoływać nie jak do tablicy dwuwymiarowej tylko po konkretnej nazwie (x, y, name).


A SPL?
  1. <?php
  2. $tab = array();
  3. $tab[0] = array(0, 0 , "b");
  4. $tab[1] = array(0, 0 , "b");
  5.  
  6. $x = new ArrayObject($tab);
  7. var_dump($x->{0});  //to może nie śmigać, pisane z palca [;
  8. ?>
flashdev
@erix zupełnie nie rozumiem jak to ma działać.
Myślę, że rozwiązanie z klasą, przechowującą same zmienne nie jest złe.
Przy zapisie całej tabeli mogę wpisywać jeden obiekt w jednej linijce a do zmiennych odwołuję się po ich nazwie, a nie numerze, czyli tak jak chciałem.
Myślę, że temat można zamknąć.
mls
Cytat(flashdev @ 7.06.2009, 02:04:45 ) *
Ale czy da się czytelniej?
Tak żebym mógł się odwoływać nie jak do tablicy dwuwymiarowej tylko po konkretnej nazwie (x, y, name).


Hmm...
Może tak:
  1. <?php
  2. $tab = array();
  3. $tab[0] = array('x' => 0, 'y' => 0, 'zmienna' => 'b');
  4. $tab[1] = array('x' => 0, 'y' => 0, 'zmienna' => 'b');
  5. ?>

Wciąż jednak jest to tablicą dwuwymiarową...
flashdev
Cytat(mls @ 8.06.2009, 15:07:20 ) *
Hmm...
Może tak:
  1. <?php
  2. $tab = array();
  3. $tab[0] = array('x' => 0, 'y' => 0, 'zmienna' => 'b');
  4. $tab[1] = array('x' => 0, 'y' => 0, 'zmienna' => 'b');
  5. ?>


O to właśnie chodziło smile.gif

Cytat(mls @ 8.06.2009, 15:07:20 ) *
Wciąż jednak jest to tablicą dwuwymiarową...


Dokładnie, asocjacyjną.
To jest dokładnie odpowiednik zapisu mojego kodu w JS.
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-2024 Invision Power Services, Inc.