Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Iterator tablicy? Pytanie o wskaźniki do elementów
noemail
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 18.07.2015

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


Witam, trochę w php brakuje mi wskaźników.

Załóżmy, że dane trzymam w obiekcie w pewnej dużej tablicy, takim drzewku złożonym z mnieszych tablic i dopiero te tablice zawierają wartości.

Coś w tym stylu:

  1. $Tree = array(
  2. 'litery' => array( 'a', 'b', 'c' ),
  3. 'cyfry' => array( '1', '2', '3' ),
  4. 'imiona' => array('Zdzisiek', 'Czesiek', 'Wacek')
  5.  
  6.  
  7. //itd... itd...
  8.  
  9. );


Teraz chciałbym mieć małpki, które po gałązkach tego drzewka mogą skakać i zwywać listki.

  1. $Monkey1 = new CMonkey( 'cyfry' );
  2.  
  3. $Monkey1 ->reset();
  4.  
  5. while ( $next = $Monkey1 ->get_next() ) // 1, 2, 3
  6. {
  7. }



Problem robi się kiedy dwie małpki siadają na tej samej gałązce.

Jeśli każda ma referencję do tej samej części tablicy to operacje na tablicy za pomocą reset(), each(), next() itp... zawadzają o siebie.

A jeśli każa dostaje kopię tablicy to następuje utrata wydajności i patrząc na czas wykonania skryptu najprawdopodobniej następuje kopiowanie tablic.

Jakby były wskaźniki i nie trzeba było korzystać z reset(), each(), next() toby było ok.

A może gdzieś w php jest zaszyty jakiś mechanizm jak pozwalający to dobrze zrobić? Chodzi o jakieś iteratory które mogą łazić po jednej wspólnej złożonej strukturze danych nie powodując w żadnym momencie jej kopiowania.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


http://php.net/manual/en/class.arrayiterator.php questionmark.gif
Go to the top of the page
+Quote Post
noemail
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 18.07.2015

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


ok dzieki, jakoś nie zwróciłem uwagi, bo szukałem czegoś dla zwykłych tablic, a tu trza używać ArrayObject... oby nie było to dużo wolniejsze...
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: 21.08.2025 - 02:48