Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dwie tablice i klucze
Forum PHP.pl > Forum > PHP
hwao
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 :-)
rogrog
  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 )
Imperior
  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. ?>
hwao
@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)
Imperior
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. ?>
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.