【问题标题】:How to create multidimensial arrays with PHP and access with jQuery?如何使用 PHP 创建多维数组并使用 jQuery 访问?
【发布时间】:2012-09-22 22:50:10
【问题描述】:

所以我的网站已经到了一个阶段,我需要将大量信息打包到一个像对象一样的 json 数组中,所以为了做到这一点,我需要在某个键名下打包一个数组信息列表,然后是另一个键名下的另一组数据。

例如:

$array = array();

foreach(action goes here)
{
    $array['data1'] = array('information' => data, 'more_information' => more_data)
}

$array['data2'] = array("more data");

这基本上说明了我正在尝试做的事情,我可以部分做到这一点,但是为新数据集命名键只会替换每个数据,而不是在 foreach 循环中添加到其中。

现在,如果这部分不太令人困惑,我需要一些帮助。然后除此之外,一旦解决了这个问题,我需要能够在我的 jQuery 响应中使用数据,所以我需要能够访问每组数据,例如:json.data1[i++].data,理想情况下会返回“more_information”。

【问题讨论】:

    标签: php javascript jquery arrays multidimensional-array


    【解决方案1】:

    您需要在该循环中增加一个数字并将结果作为 json 对象提供...

    $array = array();
    $i = 0;
    
    foreach(action goes here)
    {
        $array['data'.$i] = array('information' => data, 'more_information' => more_data)
        $i++;
    }
    
    $array['data2'] = array("more data"); 
    
    $data = json_encode($array);
    

    然后在 php 中你可以像这样设置一个 js var:

    <script type="text/javascript">
    var data = <?php echo $data; ?>;
    </script>
    

    然后可以很容易地在js中访问:

    alert(data.data1.information);
    

    如果我正确理解了您的问题,您希望得到这个对象作为对某事的回应?像 jQuery .ajax 调用一样?

    http://api.jquery.com/jQuery.ajax/

    此链接非常清楚地说明了如何使用它。您需要确保指定 dataType = "json",然后将您的数据处理放在成功调用中:

    $.ajax({
        url: 'some url string',
        type: "GET",
        dataType: "json",
        success: function(data)
        {
            $.each(data, function(i, v){
                console.log(data[i]);
            });
        },
        error: function()
        {
            //error handling
        }
    });
    

    这是相对未经测试的,但这个概念是我想要传达的。你基本上在 php 和 json_encode 中制作你的多维数组。这些方法中的任何一种都可以让您解析 json。

    【讨论】:

    • 感谢您抽出宝贵时间帮助我解决这个问题,但是我认为我的问题的关键部分不够清楚(或者可能是),但我会尝试解释一下它以确保。我想要三个子数组,其键类似于:“add”、“remove”、“update”,然后每个子数组的值将是一个数据数组,这样我就可以添加某些数据传回 javascript,或删除传回的数据,或更新传回的数据,具体取决于用户对文件所做的操作。然后在 ajax 成功中,我有点需要能够使用 $.each() on....
    • 每个数据的子数组,例如:$.each(data.add), $.each(data.remove), $.each(data.update),然后它会遍历这些键的数组。
    • 您可以完全控制 json 编码的内容。没有什么说你不能 json 编码 array('add' => array(), 'remove' => array(), 'update' => array()) 并像你在这里提到的那样访问它。你尝试过什么,得到了什么结果?
    • 我在问题中给出的示例几乎是我尝试过的。 (就创建数组而言),我遇到的问题是,当我创建密钥时,它只允许存储一个数据循环,因为它会替换它,而不是将其添加到数组。
    • 醒来并重新阅读您的评论后,我意识到您的意思,现在我相信我已经弄清楚我需要做什么了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多