Новичок PHP: вставьте переменную для отображения - PullRequest
1 голос
/ 11 июля 2011

Я хотел бы иметь возможность echo $domain из этого

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

Я пробовал фигурные скобки и другие способы форматирования $ MYVAR, но синтаксис неверный.

Справка приветствуется!

РЕДАКТИРОВАТЬ -> var_dump ($ response):

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 ($ response ['results'] [$ MYVAR]);

возвращает NULL!Именно поэтому $ domain = $ response ['results'] [$ MYVAR] ['shortUrl'];тоже не получается.Странно!

- РЕДАКТИРОВАТЬ 2 -

var_dump($MYVAR); дает:

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

Ответы [ 5 ]

4 голосов
/ 11 июля 2011

Попробуйте это:

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

Вы уверены, что он хранится в 3-х мерном массиве? Потому что это выглядит ненужным осложнением.

1 голос
/ 11 июля 2011

Попробуйте без кавычек

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

или используйте двойные кавычки

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

РЕДАКТИРОВАТЬ:

В ответ на ваши изменения.Вы обращаетесь к переменной как к ассоциативному массиву, но переменная является экземпляром stdObject.Поэтому, если вы хотите получить к нему доступ, вы должны перепечатать его так:

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

или получить к нему доступ как объект

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

РЕДАКТИРОВАТЬ 2:

Так что этостранно, потому что http://www.domain.com не имеет длины 118 символов, как пишет var_dump.

Где и как вы заполнили переменную $MYVAR?

0 голосов
/ 11 июля 2011

Это объект.

$domain = $response->results->$MYVAR->shortUrl;
0 голосов
/ 11 июля 2011

Вы пробовали без кавычек около $ MYVAR?

0 голосов
/ 11 июля 2011
$domain = $response['results'][$MYVAR]['shortUrl'];

Вам не нужны кавычки около $ MYVAR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...