PHP STR2VAR Creater功能

时间:2013-05-25 00:21:14

标签: php variables

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

这不起作用为什么?给未定义的考试1 web如何使用

定义功能

2 个答案:

答案 0 :(得分:0)

正如我在评论中告诉你的那样,这是一个变量范围问题,你声明并使用到函数中的变量只存在于该函数中,为了使变量在该函数之外生效,你必须在它的声明之前与global

这是您修复代码的方法:

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

        }
    STR2VAR('exam1,exam2,exam3');    
     echo $exam1;

答案 1 :(得分:-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'];

&GT;