如何在PHP中创建二维数组并使用Javascript迭代它

时间:2013-08-26 21:36:15

标签: php javascript jquery ajax arrays

我目前正在尝试执行以下操作:

  1. 从我的image.js代码
  2. 申请PHP文件
  3. 在请求调用中 - 从我的mysql数据库中查询数据并保存 它在PHP数组中
  4. 将数组作为JSON对象返回到image.js。
  5. 我得到了nr 1 + nr 3 - 我最喜欢的是如何正确地将我的数据库属性保存到PHP数组中,然后遍历json回调中的每条记录

    数据库属性示例:

    player_id (unique key) || player_name || player_country || player_image || player_league ||
    

    问题/挑战1:保存数组(这是我不确定的)

    while ($row = mysql_fetch_assoc($res))
    {
        $myCallbackArray[] = array($row['player_id'], $row['player_name'], $row['player_country'], $row['player_image']);
    }
    

    - 以下数组只是一个“平面数组”,没有基于在单独的player_id下保存所有相应属性的维度?

    为了给出一些上下文 - 并假设数组很好,我们然后在'下一步'将它发送回JS

    $callback = $myCallbackArray;
    echo json_encode(array('returned_val' => $callback));
    

    问题/挑战2 :访问JS中的数组值(这是我不确定的)

          //Save the data
        var url = "request.php"; //
    
          var request = $.ajax({
                 type: "POST",
                 url: url,
                 dataType: 'json',
                 data: { user_id: id},
    
                 success: function(data)
                 {
    
    //HERE WE HANDLE THE RETURNED ARRAY
    if(data.returned_val) {
    
                      for( var i = 0; i < data.returned_val.length; i++ ){
    //HERE I WOULD LIKE TO MAKE THE DIFFERENT ATTRIBUTES ACCESSABLE
                      } 
                 },
                 error:function() {
                    //FAILURE
                }   
    
    });
    return false;
    

    - 所以在这部分我不知道如何从PHP实际处理多维数组。我假设我们需要将它保存在Javascript数组中然后我们可以通过foreach循环迭代/访问每个值 - 但是又一次, - 我怎么不完全确定?

2 个答案:

答案 0 :(得分:0)

我建议使用json_encode:

$myCallbackArray []= (object) array(
    "player_id" => '...',
    "player_name" => '...',
    "player_country" => '...',
    "player_image" => '...',
    "player_league" => '...'
);

$json = json_encode($myCallbackArray);

$ json实际上是以下内容:

[{"player_id":"...","player_name":"...","player_country":"...","player_image":"...","player_league":"..."}]

这是有效的JSON,您可以在javascript中轻松使用它。

答案 1 :(得分:0)

我认为您在成功函数中访问数据错误,数据会以数组的形式返回。这是一个例子:

var request = $.ajax({
    type: "POST",
    url: url,
    dataType: 'json',
    data: {user_id: id},
    success: function(data){

        var myval = data["returned_val"];

        alert(myval);

    },
    error:function() {
        //FAILURE
    }
});