2015-12-19 3 views
1

Я нахожусь новичок PHP, я нашел предупреждение говорит:Использовать переменные переменные с суперглобальными массивами за пределами функции и класса

Пожалуйста, обратите внимание, что переменные переменные не могут быть использованы с суперглобальными массивами в функций или методы класса.

Таким образом, это означает, что я могу использовать переменные переменные с суперглобальным вне функциональных и класса методов, например:

<?php 
    foreach(array('_GET','_POST','_COOKIE','_REQUEST') as $key) { 
     if (isset($$key)){ 
      foreach($$key as $_key => $_value){ 
       $$key[$_key] = MyFunc($_value); 
      } 
     } 
    } 
    function MyFunc($str){ 
     ******************** 
    } 
?> 

На самом деле, я попробовал, и это, кажется, работает, как ожидалось, но почему PHP не позволяет использовать его внутри функции или класса, что же такое соображение?

ответ

0

Я бы предположил, что это означает, что вы не можете делать такие вещи, как isset($$key).

Возможно, вместо этого сделайте это, $request = $$key.

foreach(array('_GET','_POST','_COOKIE','_REQUEST') as $key) { 
    $request = $$key; 
    if (isset($request)){ 
     foreach($request as $_key => $_value){ 
      $request[$_key] = MyFunc($_value); 
     } 
    } 
}