Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: unset() w konteskście statycznym
Forum PHP.pl > Forum > PHP > Object-oriented programming
23kulpamens
Jak to jest możliwe, że nie mogę usunąć ani zmienić zawartości komórki tablicy przekazywanej do funkcji?? Kod jest taki
  1. public static function search($input){
  2. /**
  3.   * Process input
  4.   */
  5. print_r($input);
  6. if( $input['price']['from'] == '' && $input['price']['to'] == ''){
  7. var_dump("cut1");
  8. $input['price'] = 1;
  9. $input['price'] = '';
  10. unset($input['price']);
  11. }else{
  12. var_dump("trim");
  13. $input['price']['from'] = ($input['price']['from'] == '' ? 0 : $input['price']['from']);
  14. $input['price']['to'] = ($input['price']['to'] == '' ? 0 : $input['price']['to']);
  15. }
  16.  
  17. if( $input['area']['from'] == '' && $input['area']['to'] == ''){
  18. var_dump("cut");
  19. $input['area'] = 1;
  20. unset($input['area']);
  21. }else{
  22. var_dump("trim");
  23. $input['area']['from'] = ($input['area']['from'] == '' ? 0 : $input['area']['from']);
  24. $input['area']['to'] = ($input['area']['to'] == '' ? 0 : $input['area']['to']);
  25. }
  26.  
  27. foreach($input['parameters'] as $key => $value){
  28. if( $value == '')
  29. unset($input[$key]);
  30. }
  31. print_r($input);


tablica $input na początku i na końcu jest taka sama. Nie rozumiem dlaczego unset nie działa. Czy ze względu na kontekst statyczny?? Ma ktoś jakieś rozwiązanie??
wookieb
Ze wzgledu na to ze unsety sie nie wykonuja z tego wzgledu ze warunki w if nie zostaja spelnione.
LBO
A możesz taką jedną tablice var_exportować?
23kulpamens
to jest wynik działania skryptu:
Kod
Array
(
    [input] => Array
        (
            [estateCategory] => mieszkanie
            [noticeType] => 1
        )

    [parameters] => Array
        (
            [wojewodztwo] => dolnośląskie
            [city] =>
            [district] =>
            [price] => Array
                (
                    [from] =>
                    [to] =>
                )

            [area] => Array
                (
                    [from] =>
                    [to] =>
                )

            [rynek] => Array
                (
                    [wtorny] => 1
                )

            [cena_za_m2] => Array
                (
                    [from] =>
                    [to] =>
                )

            [budynek] => Array
                (
                    [blok_mieszkalny] => 1
                    [dom_wielorodzinny] => 1
                    [segmentowy_srodkowy] => 1
                )

            [ilosc_pokoi] => Array
                (
                    [from] =>
                    [to] =>
                )

            [ilosc_pieter] => Array
                (
                    [from] =>
                    [to] =>
                )

            [pietro] => Array
                (
                    [from] =>
                    [to] =>
                )

            [numerOgloszenia] =>
        )

    [nowe_konto_x] => 32
    [nowe_konto_y] => 7
)
string(4) "cut1"
string(3) "cut"
Array
(
    [input] => Array
        (
            [estateCategory] => mieszkanie
            [noticeType] => 1
        )

    [parameters] => Array
        (
            [wojewodztwo] => dolnośląskie
            [city] =>
            [district] =>
            [price] => Array
                (
                    [from] =>
                    [to] =>
                )

            [area] => Array
                (
                    [from] =>
                    [to] =>
                )

            [rynek] => Array
                (
                    [wtorny] => 1
                )

            [cena_za_m2] => Array
                (
                    [from] =>
                    [to] =>
                )

            [budynek] => Array
                (
                    [blok_mieszkalny] => 1
                    [dom_wielorodzinny] => 1
                    [segmentowy_srodkowy] => 1
                )

            [ilosc_pokoi] => Array
                (
                    [from] =>
                    [to] =>
                )

            [ilosc_pieter] => Array
                (
                    [from] =>
                    [to] =>
                )

            [pietro] => Array
                (
                    [from] =>
                    [to] =>
                )

            [numerOgloszenia] =>
        )

    [nowe_konto_x] => 32
    [nowe_konto_y] => 7
    [price] =>


jak widać "cut" oraz "cut1" się wypisują, więc warunek jest spelniony
LBO
Może chodziło Tobie o

  1. foreach($input['parameters'] as $key => $value)
  2. {
  3. if( $value == '')
  4. unset($input['parameters'][$key]); // zauważ ['parameters']
  5. }


Strzelam, bo wszystko wygląda w porządku na pierwszy rzut oka.
23kulpamens
Dokładnie o to, zauważyłem wczoraj, ale już nie zdążyłem odpisać tongue.gif Dzięki za pomoc smile.gif
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.