Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Warning w PHP5
Forum PHP.pl > Forum > PHP > Object-oriented programming
elka
Mam funkcję (w sumie nie ważne co robi) i ona działa zarówno pod PHP4 i PHP5

  1. <?php
  2. function CategoryIDonList($list, $id)
  3. {    
  4.   $j=0;    
  5.   while ($j<count($list) && $list[$j][0]!=$id) $j++;
  6.   if ($j==count($list)) return 0;
  7.   else return $j;
  8. }
  9. ?>


Ale przy PHP5 pojawia się ostrzeżenie

Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of CategoryIDonList(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer

Może ktoś wie co tu zmienić -- może wystarczy coś przestawić, a ja tego nie widzę, żeby nie było tego ostrzeżenia (chodzi mi oczywiście o modyfikację funkcji), albo może ktoś wie które miejsce wywołuje to ostrzeżenie??


Z góry dzięki za pomoc
FiDO
Najprawdopodobniej wywolanie tej funkcji u Ciebie wyglada jakos tak:
  1. <?php
  2.  
  3. $cos = CategoryIDonList( &$list, $id);
  4.  
  5. ?>


Czyli przekazujesz jako parametr referencje, a tak juz nie wolno. To czy funkcja przyjmuje parametr przez wartosc czy referencje powinno zalezec od definicji funkcji, a nie jej wywolania. Zatem jesli chcesz ktorys parametr przekazac przez referencje to w wywolaniu powinno byc normalnie:
  1. <?php
  2.  
  3. $cos = CategoryIDonList( $list, $id);
  4.  
  5. ?>

a w definicji:
  1. <?php
  2.  
  3. function CategoryIDonList( &$list, $id)
  4. {
  5.   // ...
  6. }
  7.  
  8. ?>
NuLL
Ktoras ze ze zmiennych jest dostarczana do funkcji jako referencja. W deklaracji funkcji przed ta zmienna dopisz &

EDIT: Znowu wolniejszy tongue.gif
elka
Dzięki bardzo...na przyszłość będę wiedziała 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.