Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从函数返回的assoc数组未定义_Php_Javascript_Jquery_Json - Fatal编程技术网

Php 从函数返回的assoc数组未定义

Php 从函数返回的assoc数组未定义,php,javascript,jquery,json,Php,Javascript,Jquery,Json,我有一个函数,它从JSON获取信息,然后将其插入数组。 然后让函数返回数组 我希望代码能像这样工作: user = getUserInfo(); console.log(user["fname"]); function getUserInfo(){ userArray = new Array(); var url = "./php/getUserInfo.php"; $.getJSON(url, function( data ) { userArra

我有一个函数,它从JSON获取信息,然后将其插入数组。 然后让函数返回数组

我希望代码能像这样工作:

user = getUserInfo();
console.log(user["fname"]);

function getUserInfo(){
    userArray = new Array();
    var url =  "./php/getUserInfo.php";

    $.getJSON(url, function( data ) {
        userArray["fname"] = data[0].first_name;
        userArray["lname"] = data[0].last_name;
        userArray["username"] = data[0].username;

        console.log(userArray["fname"]);
    });

    return userArray;
}
当我在函数中记录userArray[“fname”]的值时,它工作得非常好

当我在调用函数后记录userArray[“fname”]的值时,我得到 “未定义”


为什么会这样

函数在设置数组值之前返回数组。

getJSON
回调之外返回数组。由于调用是异步的,您将无法以传统的方式“返回”数据,但您可以调用另一个方法,并在创建数组后将其传递给它

var user; // initialize global
getUserInfo();

function getUserInfo(){
    userArray = new Array();
    var url =  "./php/getUserInfo.php";

    $.getJSON(url, function( data ) {
        // set fields
        setUserInfo(userArray);
    });
}

function setUserInfo(userArray){
    user = userArray;
}

在一系列调用之后,
user
将打赌设置为
userArray
数组。

您遇到的问题是像
getJSON()
这样的AJAX调用是异步发生的(AJAX中的第一个A)

因此,当您仍在等待服务器对AJAX调用的响应时,
将返回userArray

您需要在
getJSON
的回调函数中处理您想要对用户信息执行的任何操作(即更新页面上的某些元素、更新javascript全局范围中的变量等)