Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Extract - problem z wyodrębnianiem
Forum PHP.pl > Forum > Przedszkole
Muse
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.
erix
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.
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.