2016-09-25 6 views
0

私はTheMovieDatabase APIを使用してスクリプトに入れる情報を取得しようとしています。 は私が正しく今Json to PHP - より大きい配列にネストされた配列から特定の値を取る方法

$data['moviecrew'] = json_decode($movie_crew); 

を使用して出力をデコードしてきた、$データ[「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":"Nicholas Stoller","profile_path":"/qwcx9bdVhmyjWb0KOCdRHDXoFZ9.jpg"},{"credit_id":"52fe43409251416c750094f9","department":"Writing","id":62763,"job":"Screenplay","name":"Jarrad Paul","profile_path":"/qWaXQi5Pz6jEKw9E2xRuX74phiB.jpg"}, ..

は、「ディレクターを取ることです"私のPHPスクリプトに入れる名前。 私は次のコードを試してみました:

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

残念ながら、それは動作しませんし、それは私に次のエラーを与えた:

A PHP Error was encountered Severity: Notice Message: Trying to get property of non-object Filename: film/filmsheet.php Line Number: 36 Backtrace: File: /Applications/XAMPP/xamppfiles/htdocs/domain.com/application/views/film/filmsheet.php Line: 36 Function: _error_handler File: /Applications/XAMPP/xamppfiles/htdocs/domain.com/application/controllers/Film.php Line: 106 Function: view File: /Applications/XAMPP/xamppfiles/htdocs/domain.com/index.php Line: 315 Function: require_once

ライン36がちょうどです:

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

どのように可能性があり私はこの問題を解決する?あなたの親切なサポートに感謝します。

答えて

1

コードサンプルからコピー/ペーストエラーが発生する場合があります。

最初に$data['moviecrew']があり、あなたの質問には表示されていない変数$moviecrewを試してみてください。 (?それがコードに存在する)

次の問題に実行されます、あなたは$moviecrew = $data['moviecrew']を行っていると仮定:

「乗組員は、」配列オブジェクトではありませんので、あなたはそれらの上にループする必要があると思いますすべて。

しかし、あなただけの監督名を抽出したい、我々は唯一のこれまで1人のディレクター常に存在すると仮定ので、もし: -

$director = null; 

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

if (!is_null($director)) { 
    echo $director; 
} 
+0

パーフェクトは、それは魔法のように動作します!ありがとうbcmcfc :)あなたのハイライトについては、私はCodeigniterフレームワークを使用しています。 $ data ['moviecrew']はコントローラ内で宣言されています。 $ dataオブジェクトの宣言の後、特定のページに$ this-> load-> view( 'film/filmsheet'、$ data)という形式を使用して割り当てることができます。このように$ moviecrewのような$ data ['moviecrew']オブジェクトを使うことができます。 – mauro269

関連する問題