【问题标题】:Json to PHP - How to take a specific value from an array nested in a bigger arrayJson to PHP - 如何从嵌套在更大数组中的数组中获取特定值
【发布时间】:2016-09-25 16:09:55
【问题描述】:

我正在尝试使用 TheMovieDatabase API 获取一些信息以放入我的脚本中。 我已经使用

正确解码了输出
$data['moviecrew'] = json_decode($movie_crew);

现在,$data['moviecrew'] 数组如下:

"crew":[{"credit_id":"52fe43409251416c750094c5","department":"Directing","id":59026,"job":"Director","name":"Peyton Reed","profile_path":"/h9lEnyQ60EjKRT3ZAOcrqQVlwn3.jpg"},{"credit_id":"52fe43409251416c750094f3","department":"Writing","id":52934,"job":"Screenplay","name": “尼古拉斯 Stoller","profile_path":"/qwcx9bdVhmyjWb0KOCdRHDXoFZ9.jpg"},{"credit_id":"52fe43409251416c750094f9","department":"Writing","id":62763,"job":"Screenplay","name": “贾拉德 保罗","profile_path":"/qWaXQi5Pz6jEKw9E2xRuX74phiB.jpg"}, ..

我想做的是将“导演”名称放入我的 PHP 脚本中。 我尝试了以下代码:

<?php if($moviecrew->crew->job == "Director"){echo $moviecrew->crew->name;} ?>

不幸的是它不起作用,它给了我以下错误:

遇到 PHP 错误 严重性:通知 消息:试图获取非对象的属性 文件名:film/filmsheet.php 行号:36 回溯: 文件:/Applications/XAMPP/xamppfiles/htdocs/domain.com/application/views/film/filmsheet.php 线路:36 函数:_error_handler 文件:/Applications/XAMPP/xamppfiles/htdocs/domain.com/application/controllers/Film.php 线路:106 功能:查看 文件:/Applications/XAMPP/xamppfiles/htdocs/domain.com/index.php 线路:315 函数:require_once

第 36 行就是:

<?php if($moviecrew->crew->job == "Director"){echo $moviecrew->crew->name;} ?>

我该如何解决这个问题?感谢您的支持。

【问题讨论】:

    标签: php json codeigniter


    【解决方案1】:

    其中有几件事可能是您的代码示例中的复制/粘贴错误。

    首先你有$data['moviecrew'],然后你尝试使用你的问题中不存在的变量$moviecrew。 (它是否存在于代码中?)

    假设你已经完成$moviecrew = $data['moviecrew'],你会遇到如下问题:

    “crew”是一个数组而不是一个对象,所以你需要遍历它们。

    foreach ($moviecrew->crew as $crewMember) {
        if ($crewMember->job === 'Director') {
            echo $crewMember->name;
        }
    }
    

    但是你只想提取导演的名字,所以如果我们假设总是只有一个导演:-

    $director = null;
    
    foreach ($moviecrew->crew as $crewMember) {
        if ($crewMember->job === 'Director') {
            $director = $crewMember->name;
            break;
        }
    }
    
    if (!is_null($director)) {
        echo $director;
    }
    

    【讨论】:

    • 完美,它就像一个魅力!谢谢 bcmcfc :) 关于您的亮点,我正在使用 Codeigniter 框架。 $data['moviecrew'] 已在控制器中声明。在声明了 $data 对象后,我可以使用 $this->load->view('film/filmsheet', $data) 的形式将它分配给特定页面。通过这种方式,我可以像 $moviecrew 一样使用 $data['moviecrew'] 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-06
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多