首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用json访问数组中的元素

使用json访问数组中的元素
EN

Stack Overflow用户
提问于 2014-06-24 08:36:42
回答 1查看 68关注 0票数 0

我有以下php代码:

代码语言:javascript
复制
<?php
$library =
    '{
        "closets":[
                    {"id":"001","theme":"literature","shelves":
                    {
                        "books":[
                            {"id":"b1","genre":"english Literature"},
                            {"id":"b2","genre":"arabic literature"},
                            {"id":"b3","genre":"french literature"}  
                        ]
                    }
                    },
                    {"id":"002","theme":"comedy","shelves":{
                            "books":[
                                {"id":"b11","genre":"english comedy"},
                                {"id":"b22","genre":"arabic comedy"},
                                {"id":"b33","genre":"french comedy"}  
                            ]
                        }
                    },
                    {"id":"003","theme":"history","shelves":{
                            "books":[
                                {"id":"b11","genre":"english history"},
                                {"id":"b22","genre":"arabic history"},
                                {"id":"b33","genre":"french history"}  
                            ]
                        }
                    }
        ]
    }';

$literature = $_POST["literature"];
$comedy     = $_POST["comedy"];
$history    = $_POST["history"];

$literatureBooks = library.closets.shelves.books;
$comedyBooks     = library.closets.shelves.books;
$historyBooks    = library.closets.shelves.books;

if ($literature) {
    echo $literatureBooks;
} elseif ($comedy) {
    echo $comedyBooks;
} elseif ($history) {
    echo $historyBooks;
}
?>

和以下javascript:$(Document).ready(函数(){$(“#224”)).click(函数()){

代码语言:javascript
复制
$.ajax({
    type:'post';
    url:'library.php';
    data:'literature';
    dataType:'json';
    success: function(data)
    {
        for (var i in data){
            $("#books").append('literature Books are'+data[i]+<'br/'>);
        }
    }


});
}); 
$("#comedy").click(function(){

$.ajax({
    type:'post';
    url:'library.php';
    data:'comedy';
    dataType:'json';
    success: function(data)
    {
        for (var i in data){
            $("#books").append('comedy Books are'+data[i]+<'br/'>);
        }
    }


});
}); 
$("#history").click(function(){

$.ajax({
    type:'post';
    url:'library.php';
    data:'history';
    dataType:'json';
    success: function(data)
    {
        for (var i in data){
            $("#books").append('history Books are'+data[i]+<'br/'>);
        }
    }


});
}); 
});

当您单击其中一个按钮时,html代码是三个按钮,例如,所有图书in都应该打印(b1、b2、b3).i已经编写了代码,但我不知道如何访问数组库中的元素簿。所以我的问题是声明这些变量:

代码语言:javascript
复制
$literatureBooks=library.closets.shelves.books;
$comedyBooks=library.closets.shelves.books;
$historyBooks=library.closets.shelves.books;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-24 08:49:43

要用PHP处理JSON,必须将其转换为PHP数据结构。在此之后,您可以访问您需要的任何东西:

代码语言:javascript
复制
$library = json_decode($library, true);
$literatureBooks = $library['closets'][0]['shelves']['books'];
$comedyBooks     = $library['closets'][1]['shelves']['books'];
$historyBooks    = $library['closets'][2]['shelves']['books'];

您也可以将$library转换为对象,而不是数组:

代码语言:javascript
复制
$library = json_decode($library);
$literatureBooks = $library->closets[0]->shelves->books;
$comedyBooks     = $library->closets[1]->shelves->books;
$historyBooks    = $library->closets[2]->shelves->books;

对于ajax调用,请使用如下所示:

代码语言:javascript
复制
$.ajax({
    type:'post',        // <----- Use comas here, not semicolon
    url:'library.php',
    data:'closet=literature',
    // ...

然后,在PHP中,您可以跳过整个if ($literature) {}块,只需回显正确的衣柜:

代码语言:javascript
复制
$closet = $_POST['closet']; # You should sanitize this
echo $($closet . 'Books');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24381943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档