如果使用变量调用函数,则全局变量为空

时间:2018-09-27 06:24:40

标签: php function variables

为什么这不起作用

$(document).on('click', '.title', function(){
    let fn = 'abc';
    $.post('common.php', {fn}, function(data) {
        console.log(data);
    });
});

common.php

if (isset($_POST['fn'])) {$_POST['fn']();}

$cols = '323';

function abc() {
    global $db;  // this works (db connection);
    global $cols;
    echo $cols;  //  doesn't work result is empty
    echo '323';  // this works
}

没有逻辑-有些全局变量有效(例如$db连接),而有些无效。

有帮助吗?

1 个答案:

答案 0 :(得分:1)

因为在第一行中调用函数

if (isset($_POST['fn'])) {$_POST['fn']();}

$cols变量未定义。但是,如果在函数调用之前定义变量,它将可以正常工作。

$cols = '323';
if (isset($_POST['fn'])) {$_POST['fn']();}

function abc() {...

demo中查看结果