2011-07-11 2 views
-1

Мне нужно получить элемент «shortUrl» из этого массива в переменную, но не может!Простой PHP: Извлеките переменную PHP из массива

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" 
} 

Помогите оценить.

ответ

5

Его не массив, его объект (-tree).

echo $obj->results->{"http://www.domain.com"}->shortUrl; 

Должно работать.

Также похоже, что вы получаете эту структуру как JSON, я думаю? Затем вы можете использовать второй параметр json_decode(), чтобы сделать из него ассоциативный массив.

$array = json_decode($json, true); 
echo $array['results']['http://www.domain.com']['shortUrl']; 
+0

Благодарим за помощь. Это спасло меня от боли. Вместо «['http://www.domain.com']« Я бы хотел «$ domain» (это нужно пройти внутри цикла), но я не могу правильно получить синтаксис. Кудрявые скобки, похоже, не делают этого. Любые идеи приветствуются! –

+0

Не знаю, какой вариант вы используете. Его либо '$ domain = $ obj-> results-> {'http://www.domain.com'}', либо '$ domain = $ array ['results'] ['http: //www.domain. ком ']'. Я предлагаю вам использовать последний (и помните, что это работает только при установке второго аргумента 'json_decode()' на 'true'!). Тем не менее, вы должны больше узнать о массивах и объектах в руководстве php, потому что они являются важными частями php. – KingCrunch

+0

Я обязательно прочитаю. Я не могу заставить этот последний бит работать. Извините, что попросил еще раз. «$ domain = $ response ['results'] ['$ MYVAR'] ['shortUrl'];" Я пытаюсь вставить переменную, где $ MYVAR есть, но синтаксис нарушает ее. Еще раз спасибо. –

Смежные вопросы