Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z search_array()
Forum PHP.pl > Forum > PHP
chomiczek
Witam, mam problem z tą funkcją.. mam taki fragment kodu:
mam 2 tablice:
  1. <?php
  2.  
  3. $aktualne = array('260 ms' => 'Czas dostępu (DVD)','Nie' => 'Dual Layer (nagrywanie płyt dwuwarstwowych)','48 x' => 'Klasa szybkości odczytu CD-ROM','16 x' => 'Klasa szybkości odczytu DVD','48 x' => 'Klasa szybkości zapisu CD-R','24 x' => 'Klasa szybkości zapisu CD-RW','16 x' => 'Klasa szybkości zapisu DVD+R','4 x' => 'Klasa szybkości zapisu DVD+RW','8 x' => 'Klasa szybkości zapisu DVD-R','4 x' => 'Klasa szybkości zapisu DVD-RW','2000 kB' => 'Pamięć podręczna');
  4.  
  5. $zalecane = array('Czas dostępu (DVD)' => '0.SPECYFIKACJA ','Dual Layer (nagrywanie płyt dwuwarstwowych)' => '0.SPECYFIKACJA ','Klasa szybkości odczytu CD-ROM' => '0.SPECYFIKACJA ','Klasa szybkości odczytu DVD' => '0.SPECYFIKACJA ','Klasa szybkości odczytu DVD+R (dwuwarstwowa)' => '0.SPECYFIKACJA ','Klasa szybkości odczytu DVD-R (dwuwarstwowa)' => '0.SPECYFIKACJA ','Klasa szybkości odczytu DVD-RAM' => '0.SPECYFIKACJA ','Klasa szybkości zapisu CD-R' => '0.SPECYFIKACJA ','Klasa szybkości zapisu CD-RW' => '0.SPECYFIKACJA ','Klasa szybkości zapisu DVD+R' => '0.SPECYFIKACJA ','Klasa szybkości zapisu DVD+R (dwuwarstwowa)' => '0.SPECYFIKACJA ','Klasa szybkości zapisu DVD+RW' => '0.SPECYFIKACJA ','Klasa szybkości zapisu DVD-R' => '0.SPECYFIKACJA ','Klasa szybkości zapisu DVD-R (dwuwarstwowa)' => '0.SPECYFIKACJA ','Klasa szybkości zapisu DVD-RAM' => '0.SPECYFIKACJA ','Klasa szybkości zapisu DVD-RW' => '0.SPECYFIKACJA ','Pamięć podręczna' => '0.SPECYFIKACJA ');
  6.  
  7. ?>


i do tego mam taki kod:
  1. <?php
  2. foreach($zalecane as $nazwa=>$kategoria) {
  3. $pisz = "";
  4. if ($wypisana!=$kategoria) { ?>
  5. <tr><td colspan="2"><p align=left class="napiscena_duza"><?php echo substr($kategoria,2); ?></p></td></tr>
  6. <?php $wypisana = $kategoria;
  7. }
  8. $klucz = array_search($nazwa, $aktualne);
  9. echo $klucz."<br/>";
  10. if ($klucz!="") $pisz = $klucz;
  11. else $pisz = "Brak danych";
  12. if($i++%2) $kl="parzyste"; else $kl="niep"; ?>
  13.  <tr class="<?php echo $kl; ?>" valign="top"><td>&nbsp;<?php echo $nazwa; ?></td><td> <?php echo $pisz; ?></td></tr>
  14. <?php } ?>



Wynik jaki otrzymuje to:

Czas dostępu (DVD) 260 ms
Dual Layer (nagrywanie płyt dwuwarstwowych) Brak danych
Klasa szybkości odczytu CD-ROM Brak danych
Klasa szybkości odczytu DVD Brak danych
Klasa szybkości odczytu DVD+R (dwuwarstwowa) Brak danych
Klasa szybkości odczytu DVD-R (dwuwarstwowa) Brak danych
Klasa szybkości odczytu DVD-RAM Brak danych
Klasa szybkości zapisu CD-R 48 x
Klasa szybkości zapisu CD-RW 24 x
Klasa szybkości zapisu DVD+R 16 x
Klasa szybkości zapisu DVD+R (dwuwarstwowa) Brak danych
Klasa szybkości zapisu DVD+RW Brak danych
Klasa szybkości zapisu DVD-R 8 x
Klasa szybkości zapisu DVD-R (dwuwarstwowa) Brak danych
Klasa szybkości zapisu DVD-RAM Brak danych
Klasa szybkości zapisu DVD-RW 4 x
Pamięć podręczna 2000 kB


Ogólnie chodzi mi o porównanie dwóch tablic.. może ktoś ma jakiś inny pomysł jak to rozwiązać?
ToPeR
Błąd leży w tablicy: $aktualne smile.gif
wyświetl sobie tą tablice (jakbyś używał DEBUGERa to byś znalazł błąd).

  1. <?php
  2. $aktualne = array(...
  3. '48 x' => 'Klasa szybkości odczytu CD-ROM',
  4. '48 x' => 'Klasa szybkości zapisu CD-R',
  5. ...
  6. '16 x' => 'Klasa szybkości odczytu DVD',
  7. '16 x' => 'Klasa szybkości zapisu DVD+R',
  8. ...
  9. '4 x' => 'Klasa szybkości zapisu DVD+RW',
  10. '4 x' => 'Klasa szybkości zapisu DVD-RW',
  11. ...
  12.  
  13. ?>

nadpisujesz sobie klucze nowymi wartościami.

pozdrawiam
ToPeR
chomiczek
No i napisałem sobie sam, ale dzięki TOPER za pomoc, zamieniłem w $aktualne klucz z wartością i mam:

  1. <?php
  2. $aktualne = array('Czas dostępu (DVD)' => '260ms',
  3. 'Dual Layer (nagrywanie płyt dwuwarstwowych)' => Nie',
  4. .
  5. .
  6. .
  7. 'Pamięć podręczna' => '2000 kB'); 
  8. ?>


  1. <table width="585" class="tresc" style="padding:0px; width:100%;">
  2. <?php
  3. foreach($zalecane as $nazwa=>$kategoria) {
  4. $pisz = "";
  5. if ($wypisana!=$kategoria) { ?>
  6. <tr><td colspan="2"><p align=left class="napiscena_duza"><?php echo substr($kategoria,2); ?></p></td></tr>
  7. <?php $wypisana = $kategoria;
  8. }
  9. if($i++%2) $kl="parzyste"; else $kl="niep"; 
  10. if (array_key_exists($nazwa, $aktualne)) {
  11. foreach($aktualne as $aktNaz=>$aktTXT) {
  12. if ($nazwa==$aktNaz) $pisz = $aktTXT; 
  13. }
  14. }
  15. else $pisz = "brak danych"; ?>
  16.  <tr class="<?php echo $kl; ?>" valign="top"><td>&nbsp;<?php echo $nazwa; ?></td><td> <?php echo $pisz; ?></td></tr>
  17. <?php } ?>
  18. </table>


wyświetla teraz wszystko ok.
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.