Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: talice w klasach
Forum PHP.pl > Forum > PHP
maxxxta
Mam pewnien problem obsluga tablic w kalsie. Szczegolnie kiedy stosuje add_push....nie moge wyswietlic zawartosci metodą....jedynie jak przesle tablice do zmiennej poza klasa...nie rozumiem tego zupelnie..szczegolnie, ze kod bez klasy dziala(po usunieciu $this)...
bamboos
Podał byś kawałek kodu?!? Najlepiej ten kawałek co Ci nie działa...
maxxxta
Kod
<?



class jacek{



var $tablica;



function jacek(){



  $this->$tablica=array();

  

}



function dodaj(){





array_push($this->$tablica, "jablko");

$this->$tablica["jablko"]=array();

array_push($this->$tablica["jablko"], "costam");

echo $this->$tablica["jablko"][0];







return $this->$tablica;

  }









}



$f=new jacek;

$tab=$f->dodaj();









?>
kszychu
[php:1:e4b676926d]<?php
array_push($this->$tablica, "jablko");
$this->$tablica["jablko"]=array();
?>[/php:1:e4b676926d]

Z tego co mi wiadomo, array_push() wstawia WARTOŚĆ na koniec tablicy. Jak więc chcesz się później odwoływać podając wartość pola jako jego index?
maxxxta
[php:1:0eb4dcb9bc]<?php
$tablica=array();
array_push($tab, "jablko");
$tab["jablko"]=array();
array_push($tab["jablko"], "costam");
echo $tab["jablko"][0];

?>[/php:1:0eb4dcb9bc]

z tym, że poza klasa dziala bez problemu i echo wyświetla "costam"...wiec nic nie wiem jush
maxxxta
oczywiscie w drugiej linii jest $tab=array()..a nie $tablica...smile.gif
kszychu
[php:1:c3174cd65a]<?php
// tworzysz nową pustą tablicę
$tablica=array();
// na jej początek, do pola o indeksie 0 wstawiasz string "jabłko"
array_push($tab, "jablko");
// tworzysz KOLEJNE pole w tej tablicy o indeksie "jabłko", po tym masz w tablicy dwa pola: 0 i jabłko
$tab["jablko"]=array();
// do pola o indeksie "jabłko" wrzucasz string "costam"
array_push($tab["jablko"], "costam");
// wyswietlasz zawartosc pola o indeksie "jablko"
echo $tab["jablko"][0];

?>[/php:1:c3174cd65a]

No i działa jak trzeba, tylko, że jak wyświetlisz sobie print_r($tablica) zobaczysz prawdziwą strukturę Twojej tablicy.
maxxxta
Dobrze zacznijmy jeszcze raz....mi chodzi o to zeby to zrobic w klasie nie poza klasa dla pewnosci podam caly kod [php:1:94e96fbb5b]<?php

class jacek{

var $tablica;

function jacek(){

$this->$tablica=array();

}

function dodaj(){


array_push($this->$tablica, "jablko");
$this->$tablica["jablko"]=array();
array_push($this->$tablica["jablko"], "costam");
print_r($this->$tablica);


return $this->$tablica;
}




}

$f=new jacek;
$tab=$f->dodaj();

echo "<br>";

$tab=array();


array_push($tab, "jablko");
$tab["jablko"]=array();
array_push($tab["jablko"], "costam");
print_r($tab);




?>[/php:1:94e96fbb5b]


a co to wyswietla:
Kod
Array ( [0] => costam )

Array ( [0] => jablko [jablko] => Array ( [0] => costam ) )



i pytanie dlaczwgo i jak zrobic zeby tablica w klasie miala taka sama strukture...jak tablica poza....
kszychu
No dobra, a jaką strukturę tablicy chcessz uzyskać?
bamboos
Nieeeeeeeeeeee...
do pól klasy odnisisz się:
[php:1:b79248e6bc]<?php
$this->pole_klasy;
//a nie
$this->$pole_klasy;
?>[/php:1:b79248e6bc]
Pozmnieniaj to ... i będzie działać
maxxxta
Napisalem dokladnie w poprzednim poscie....ale napisze jeszcze dokladniej....



tablice poza klasa zrobilem,zeby przetestowac budowanie tablicy wielowymiarowej i osiagnalem strukture taka jaka chcialem czyli



Kod
Array ( [0] => jablko [jablko] => Array ( [0] => costam ) )



ale powtarzam to jest tylko pomocnicza tablica, chcialem zponac mechanizm array_push... i teraz w kalsie

chce miec tablice o takiej samej strukturze(tworzoną metodą bo chce operowac na zniennych przysylanych do metody)...
bamboos
[php:1:20910c7d2c]<?php

class jacek{
var $tablica;

function jacek(){
$this->tablica=array();
}

function dodaj(){
array_push($this->tablica, "jablko");
$this->tablica["jablko"]=array();
array_push($this->tablica["jablko"], "costam");
}
}

$f=new jacek;
$f->dodaj();
echo '<pre>';
print_r($f->tablica);
echo '</pre>';
?>[/php:1:20910c7d2c]
W czym problem?!?
maxxxta
DZIEKI WIELKIE...taki banal a meczy...soryy,ze tak dlugo trwalo zanim wyjasnilem o co mi chodzi..dziex jeszcze raz:)
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.