2011-07-11 20 views
1

をエコーするための変数を挿入して、私は、中括弧と$ MYVARをフォーマットする様々な他の方法を試してみたが、構文が間違っているこの初心者PHP:

$domain = $response['results']['$MYVAR']['shortUrl'];

からecho $domainにできるようにしたいのですが。

大歓迎です!

EDIT - >のvar_dump($応答):

object(stdClass)#1 (4) { 
    ["errorCode"]=> int(0) 
    ["errorMessage"]=> string(0) "" 
    ["results"]=> object(stdClass)#2 (1) { 
     ["http://www.domain.com"]=> object(stdClass)#3 (5) { 
      ["userHash"]=> string(6) "oSEMki" 
      ["shortKeywordUrl"]=> string(0) "" 
      ["hash"]=> string(6) "oms2ZB" 
      ["shortCNAMEUrl"]=> string(20) "http://bit.ly/LALALA" 
      ["shortUrl"]=> string(20) "http://bit.ly/LALALA" 
     } 
    } 
    ["statusCode"]=> string(2) "OK" 
} 

私は "domain.com" 要素の罰金を見ることができますが、私はこれを実行します。

のvar_dump($応答[ '結果' を] [$ MYVAR]);

NULLを返します。なぜでしょうか?$ domain = $ response ['results'] [$ MYVAR] ['shortUrl'];失敗する。奇妙な!

--edit 2 -

var_dump($MYVAR);います:

string(118) "http://www.domain.com"

+1

私はあなたが尋ねることができる方法を見ていないこの再:http://stackoverflow.com/questions/6651193/simple-php-extract-a-php-variable-from-an-array – phant0m

答えて

4

はこれを試してみてください:

$domain = $response['results'][$MYVAR]['shortUrl']; 
echo $domain; 

は、あなたはそれがそのような3次元配列に格納されていますか? これは不必要な複雑さのように見えるためです。

+0

@JonathanRossああ、申し訳ありません。 'var_dump($ domain);'と 'var_dump($ response ['results']);'と 'var_dump($ response ['results'] [$ MYVAR]);'がどのように格納されているかをしっかりと把握してみてください彼らのもの。 $ MYVARをエコーし​​て、正しいインデックス名かどうか確認してください。 – FinalForm

+0

@JonathanRossこれを行うecho '$ response-> results-> shortUrl;' – FinalForm

+0

@FinalForm:いいえ、あなたは '$ MYVAR'を忘れました – phant0m

0
$domain = $response['results'][$MYVAR]['shortUrl']; 

$ MYVARの周りに引用符は必要ありません。

+0

残念なことに、それを得ていない: '$ domain = $ response ['results'] [$ MYVAR] ['shortUrl']; echo $ domain; '$ MYVARはURLで、' ['http://domain.com'] 'のように動作しますが、[$ MYVAR]では動作しません。 –

+0

print_r($ response)を試してください。それは配列のキーと値全体を見るのに役立ちます。 – Trevor

0

$ MYVARを引用符なしで試しましたか?あなたの編集への反応では

1

は引用符

$domain = $response['results'][$MYVAR]['shortUrl']; 

または二重引用符に

$domain = $response['results']["$MYVAR"]['shortUrl']; 

EDITを使用せずに、それを試してみてください。連想配列のように変数にアクセスしていますが、変数はstdObjectのインスタンスです。あなたはそれをアクセスもしたいのであれば、あなたはこのようにそれを再入力する必要があります。

$tmp = (array) $response; 
$domain = $tmp['results'][$MYVAR]['shortUrl']; 

またはオブジェクトのようなアクセスを

$domain = $tmp->results->$MYWAR->shortUrl; 

EDIT 2:http://www.domain.comではないので

だから、奇妙ですvar_dumpが書いたように、長さは118文字です。

ここでどのように変数$MYVARを入力しましたか?

+0

ありがとう、Jakub。それではうまくいきません:( –

+0

var_dump($ MYVAR)pls。 –

+0

の出力を教えてください。私はそれを質問に入れます。 –

0

これはオブジェクトです。

$domain = $response->results->$MYVAR->shortUrl;