Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Extract - problem z wyodrębnianiem
Muse
post 26.01.2009, 15:59:10
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 0
Dołączył: 15.12.2008

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


Witam! Na początek podam kod, a potem powiem w czym problem.
  1. <?php
  2. $array = $_POST;
  3. $array2 = $array;
  4.  
  5. foreach($array as $key => $value) {
  6.    $value = trim($value);
  7.    $value = strtolower($value);
  8. }
  9. extract($array);
  10.  
  11. foreach($array2 as $key2 => $value2) {
  12.    $value2 = trim($value2);
  13.    $value2 .= strlen($value2);
  14. }
  15. extract($array2, EXTR_PREFIX_ALL, 'l_');
  16.  
  17. echo $l_name;
  18. echo $varname;
  19.  
  20. ?>


1. Chcę, aby zmienne typu np. $login, czy $name (wyodrębnione z tablicy $array) zawierały wartości, tak jak jest to normalnie. Przedtem jednak chciałbym je wyczyścić z dodatkowych spacji i zredukować do małych liter.
2. Z tablicy $array2 chcę wyodrębnić klucze i zapisać je jako nazwy zmiennych z przedrostkiem "l_", natomiast ich wartościami powinna być długość ciągu, który jest wartością ($value2).

Efekt wykonania: $varname zostaje wypisana także dużymi literami (pomimo strtolower() ), a $l_name w ogóle nie jest wypisywana. Jestem początkujący i nie zdaję sobie sprawy gdzie mam błędy. Proszę o pomoc.

Ten post edytował Muse 26.01.2009, 16:08:37
Go to the top of the page
+Quote Post
erix
post 26.01.2009, 16:27:55
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
1. Chcę, aby zmienne typu np. $login, czy $name (wyodrębnione z tablicy $array) zawierały wartości, tak jak jest to normalnie. Przedtem jednak chciałbym je wyczyścić z dodatkowych spacji i zredukować do małych liter.

Lepiej byłoby array_walk" title="Zobacz w manualu PHP" target="_manual zamiast pętli. winksmiley.jpg

Cytat
2. Z tablicy $array2 chcę wyodrębnić klucze i zapisać je jako nazwy zmiennych z przedrostkiem "l_", natomiast ich wartościami powinna być długość ciągu, który jest wartością ($value2).

array_keys" title="Zobacz w manualu PHP" target="_manual

A Twój problem polega na tym, że wartości, które obrabiasz, to nie referencje, a "kopie" wartości. Aby wszystko działało ok, to zmień deklarację pętli wg:
  1. <?php
  2. foreach($array2 as $key2 => &$value2) {
  3. ?>

i każda zmiana $value2 w pętli zaowocuje zmianą odpowiedniej wartości w tablicy.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 04:24