глобальная переменная пуста, если функция вызывается с использованием переменной - PullRequest
0 голосов
/ 27 сентября 2018

Почему это не работает

$(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 голосов
/ 27 сентября 2018

Потому что при вызове функции в первой строке

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

$cols переменная не определена.Но если вы определяете переменную перед вызовом функции, она работает правильно.

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

function abc() {...

Проверьте результат в demo

...