Portál AbcLinuxu, 12. května 2025 08:17

Dotaz: Problém s array v PHP

11.5.2014 00:34 Marián
Problém s array v PHP
Přečteno: 355×
Odpovědět | Admin
Zdravím, vidí tady někdo funkční chybu? Nemůžu na to přijít, proč se nevypíšou i pole "foo" ale jen "bar" :-( Poradí někdo jak to opravit? Děkuji pěkně.
class Class1 {
  public function set($key, $value){
    $this->data[$key] = $value;
  }
  public function get($key){
    return $this->data[$key];
  }
}

class Class2 {
  function __construct($obj1){
    $array['aaa']['foo1'] = 'foo1';
    $array['aaa']['foo2'] = 'foo2';
    $array['aaa']['foo3'] = 'foo3';
    $obj1->set('aaa', $array);
  }
}


class Class3 {
  function __construct($obj1){
    $array['aaa']['bar1'] = 'bar1';
    $array['aaa']['bar2'] = 'bar2';
    $array['aaa']['bar3'] = 'bar3';
    $obj1->set('aaa', $array);
  }
}


$obj1 = new Class1();
$obj2 = new Class2($obj1);
$obj3 = new Class3($obj1);

var_dump($obj1->get('aaa'));
Výsledek: array(1) { ["aaa"]=> array(3) { ["bar1"]=> string(4) "bar1" ["bar2"]=> string(4) "bar2" ["bar3"]=> string(4) "bar3" } }

var_export($obj1->get('aaa'));
Výsledek: array ( 'aaa' => array ( 'bar1' => 'bar1', 'bar2' => 'bar2', 'bar3' => 'bar3', ), )
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.5.2014 01:11 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Problém s array v PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ty magické metody se nejmenují get a set, ale __get a __set.

Jinak celé je to úplně zmatené. Ve třídě Class1 chybí deklarace pole $this->data, konstruktor Class2 pracuje s nějakým neznámým polem $array. To pole v $obj1 se prostě přepíše novými hodnotami.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
11.5.2014 01:44 Marián
Rozbalit Rozbalit vše Re: Problém s array v PHP
Tak jak to udělat, abych to pole přidal a nepřepsal ? Díky
11.5.2014 01:47 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Problém s array v PHP
Asi bych se vykašlal na používání polí a udělal bych to jen v objektech.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
12.5.2014 08:47 Honza Vrana
Rozbalit Rozbalit vše Re: Problém s array v PHP
Pokud chcete dve pole spojit pouzijte funkci array_merge

Honza Vrana
12.5.2014 12:29 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: Problém s array v PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
pole je prostě přepsáno, to nevidíte ?
function __construct($obj1){
    $array['aaa']['bar1'] = 'bar1';
    $array['aaa']['bar2'] = 'bar2';
    $array['aaa']['bar3'] = 'bar3';
    $obj1->set('aaa', $array);
  }
fungovalo by
function __construct($obj1){
    $array['bbb']['bar1'] = 'bar1';
    $array['bbb']['bar2'] = 'bar2';
    $array['bbb']['bar3'] = 'bar3';
    $obj1->set('bbb', $array);
  }

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.