Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dwie tablice i klucze, Klucze z 1nej tablicy jako klucz w 2giej
hwao
post
Post #1


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




Witam.
Czy jest możliwość z takiej tablicy:
  1. <?php
  2. $array = array( 'a', 'b', 'c', 'd' );
  3. ?>

Bez eval" title="Zobacz w manualu PHP" target="_manual() odwolać się do tablicy 2:
  1. <?php
  2. $array2['a']['b']['c']['d'] = 'Costam';
  3. ?>


Chodzi mi dokładnie o wytworzenie z kluczów jednej tablicy klucze do 2giej, (np w celu, danie znienej, sprawdzenia czy istnieje, itd);

Chyba jasno wytlumaczyłem :-)
Go to the top of the page
+Quote Post
rogrog
post
Post #2





Grupa: Zarejestrowani
Postów: 602
Pomógł: 1
Dołączył: 3.04.2004
Skąd: Trójmiasto (Gdańsk)

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


  1. <?php
  2.  
  3. $array2[ $array[0] ][ $array[1] ] [ $array[2] ] [ $array[3] ] 
  4.  
  5. ?>


gorzej jeżeli to ma działać w różnych wymiarach tablicy ( to znaczy bez z góry określonego schematu )
Go to the top of the page
+Quote Post
Imperior
post
Post #3





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 16.10.2004

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


  1. <?php
  2. function GetElementByArrayPath($arrayData, $arrayPath) {
  3. for ($i=0; $i<count($arrayPath); ++$i) {
  4. $arrayData = $arrayData[$arrayPath[$i]];
  5. }
  6. return $arrayData;
  7. }
  8. ?>

Według przykładu:
  1. <?php
  2. $array = array( 'a', 'b', 'c', 'd' );
  3. $array2['a']['b']['c']['d'] = 'Costam';
  4. echo GetElementByArrayPath($array2,$array);
  5. ?>
Go to the top of the page
+Quote Post
hwao
post
Post #4


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




@rogrog : niestety liczba ich nie jets okreslona.

@Imperior : Twoj przyklad działa ale jak jest:

  1. <?php
  2. function GetElementByArrayPath($arrayData, $arrayPath) {
  3. for ($i=0; $i<count($arrayPath); ++$i) {
  4. $arrayData = $arrayData[$arrayPath[$i]];
  5. }
  6. return $arrayData;
  7. }
  8.  
  9. $array = array( 'a', 'b', 'c', 'd' );
  10.  
  11. $array2['a']['b']['c']['d'] = 'Costam';
  12. $array2['a']['b']['c']  = 'Dane';
  13.  
  14. echo GetElementByArrayPath($array2,$array);
  15.  
  16. ?>


To już nie mam Costam tylko Dane.

Dokładniej moze opisze:
1 tablica przechowuje klucze ktore mi sa potrzebne w 2giej tablicy:
  1. <?php
  2. $array = array( 'a', 'b', 'c', 'd' );
  3.  
  4. // i ona ma te klucze co podaje w 2giej czyli
  5. $array2['a']['b']['c']['d'];
  6. ?>

I np potrzebuje tego zeby sprawdzic czy tablica $array2 . Jest tak zbudowana( ma idelanie takie same klucze jak w $array)
Go to the top of the page
+Quote Post
Imperior
post
Post #5





Grupa: Zarejestrowani
Postów: 105
Pomógł: 0
Dołączył: 16.10.2004

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


Argumenty te same, funkcja sprawdza prawdę lub fałsz w zależności od tego, czy pierwsza tablica posiada element, do którego można trafić za pomocą kluczy z drugiej tablicy.
  1. <?php
  2. function CheckArrayAgainstArrayPath($arrayData, $arrayPath) {
  3. $count = count($arrayPath) - 1;
  4. for ($i=0; $i<=$count; ++$i) {
  5. if (isset($arrayData[$arrayPath[$i]])) {
  6. $arrayData = $arrayData[$arrayPath[$i]];
  7. } else {
  8. return false;
  9. }
  10. if ((!is_array($arrayData)) && ($count<>$i)) {
  11. return false;
  12. }
  13. }
  14. return true;
  15. }
  16. ?>

Według w/w przykładu:
  1. <?php
  2. $array = array( 'a', 'b', 'c', 'd' );
  3.  
  4. $array2['a']['b']['c']['d'] = 'Costam';
  5. $array2['a']['b']['c'] = 'Dane';
  6.  
  7. echo (CheckArrayAgainstArrayPath($array2,$array)?'tak':'nie');
  8. ?>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 14:29