2016-11-14 10 views
-1

この優れた答えを読んだことがあります。 How can I access an array/object?PHPのネストされた配列オブジェクトのEcho CustomField

しかし、ネストされた配列から必要なオブジェクト値を抽出できないようです。私はキャンペーンモニタAPIを使用しており、次のオブジェクトをダンプします。

これは、私のクエリがvar_dump($ result-> response)で生成しているものです。

Got subscriber 

object(stdClass)#728 (6) { 
    ["EmailAddress"]=> 
    string(29) "[email protected]" 
    ["Name"]=> 
    string(7) "Alan" 
    ["Date"]=> 
    string(19) "2016-10-07 17:10:00" 
    ["State"]=> 
    string(6) "Active" 
     ["CustomFields"]=> 
     array(4) { 
     [0]=> 
      object(stdClass)#727 (2) { 
      ["Key"]=> 
      string(5) "Phone" 
      ["Value"]=> 
      string(7) "12345678" 
    } 
[snip] 

「キー」文字列を選択し、「値」文字列を取得することによって、電話番号をエコーまたはプリントする方法を教えてください。私は以下(とバリエーション)を試してみましたが、動作しませんでした。

foreach($result->response->CustomFields as $CustomField) { 
    if(!empty($CustomField->Key->Phone)) { 
     $phone = $CustomField->Key->Phone->Value; 
    } 

echo 'test phone'. $phone; 

} 

以下(このスレッドphp accessing attributes in jsonと同様)作業を行う - しかし、整数を使用しての問題点は、[2]以下でのフィールドの数に依存し、それは潜在的に異なるキーに変更することができるということです指定されたユーザーが移入した配列 - このメソッドは信頼できません。

print_r($result->response->CustomFields[2]->Value); 
+0

'$ CustomField-> Key'は別の' - > Phone'を持つオブジェクトではなく、文字列です! 'if($ CustomField-> Key == 'Phone')'? – deceze

+0

ありがとうございます。私は試みたが、これはうまくいかなかった。 – Sol

答えて

1

あなたがこれを行う瞬間:あなたはさらにそれを処理したい場合、あなたは、例えば、何かを行うことができますので、

$CustomField->Key 
$CustomField->Value 

foreach($result->response->CustomFields as $CustomField) { 

をあなたはこのようなフィールドにアクセスすることができますこのように:

$someClass->{$CustomField->Key} = $CustomField->Value 

これは、$ someClass-> Phone = "12345678"に翻訳されます。それはあなたが本当に値を使って次に何をしたいかによって決まります。

+0

これは役に立ちましたが、私はそれを働かせることができませんでした。この例では、キーを「電話」にする方法を指定します。私はこれを試しました:if($ CustomField-> Key == 'Phone'){ \t \t \t \t echo 'test phone' $ CustomField-> Value; \t \t} – Sol

+0

@Sol、何の鍵?どのようにそれを使用するつもりですか?あなたはすでに鍵を知っています。それは '$ CustomField-> Key'です。 – walther

+0

申し訳ありませんが、私はそれを取得していません。私は単に "キー"> "電話"をターゲットにして、電話番号を抽出するだけです。より明確な例を教えてください。 – Sol

関連する問題