-1
   <?php function STR2VAR($strs){
     $a = explode(',',$strs);
     foreach($a as $key) {
            $$key =  $_GET[$key];
            }
        }
    STR2VAR('exam1,exam2,exam3');    
     echo $exam1;
?>

这不起作用为什么?给出未定义的考试 1 如何在功能中定义 web 到外边使用

4

2 回答 2

0

正如我在评论中告诉您的,这是一个变量范围问题,您在函数中声明和使用的变量仅存在于该函数中,为了使变量存在于该函数之外,您必须在其声明之前使用global

这是您修复代码的方式:

function STR2VAR($strs){
     $a = explode(',',$strs);
     foreach($a as $key) {
           global  $$key;
         $$key =  'test';
            }

        }
    STR2VAR('exam1,exam2,exam3');    
     echo $exam1;
于 2013-05-25T00:29:46.930 回答
-2

执行函数后,变量变量超出范围,因此出现分段错误/空引用。声明您的$$变量global或使用现有数组进行赋值。

一个示例修复:

    $my_array = array();

    function STR2VAR($strs) {
        global $my_array;
        $a = explode(',',$strs);
        foreach($a as $key) {
            $my_array[$key] =  $_GET[$key];
        }
    }

    STR2VAR('exam1,exam2,exam3');    
    echo $my_array['exam1'];

?>

于 2013-05-25T00:31:07.847 回答