2014-11-27 5 views
0

У меня есть следующий массив (открытый с помощью var_dump).extract php array value

array (size=3) 
    'auth' => string 'debug' (length=5) 
    'url' => string 'http://X.X.X.X/status.cgi?' (length=31) 
    'page' => string '{ "host": { "uptime": 1543,  "time": "2011-07-26 12:07:40", "fwversion": "v1.1.1", "hostname": "ASDASDASD", "netrole": "DFDFDF" }, "lan": { "status": [{ "plugged": 1, "speed": 100, "duplex": 1 }], "hwaddr": "00:00:22:11:11:11", "ip": "", "rx": { "bytes": 5988, "packets": 83, "errors": 0 }, "tx": { "bytes": 9496, "packets": 120, "errors": 0 } }, "wan": { "status": [], "hwaddr": "00:00:00:00:00:00", "ip": "", "rx": { "bytes": 0, "packets": 0, "errors": 0 }, "tx": { "bytes": 0, "packets"'... (length=1779) 

Мне нужно извлечь данные из глобальной сети, как IP или ге ...

Я попытался с помощью массива $ [ 'страницы'] [ 'Вана] [ 'ого'], но ничего !! !

Спасибо.

+0

Вы можете использовать 'print_r (...) 'со вторым аргументом' $ return = true': ' 'обезьяна', 'foo' => 'bar', 'x' => array ('x', 'y', 'z')); $ results = print_r ($ b, true); // $ results теперь содержит вывод print_r ?> ' http://php.net/manual/en/function.print-r.php – automatix

ответ

3

Значение page вашего $array на самом деле не массив, а строка. Так как это строка JSON, вы должны использовать json_decode декодировать строку в содержательный формат для PHP для обработки:

$page = json_decode($array['page']); 
$pageArray = json_decode($array['page']); // Returned as an array 

И получить RX, например:

var_dump($page->wan->rx); // Returned as an object 
var_dump($pageArray['wan']['rx']); // Return as an array 
+2

Если вы предпочитаете декодировать JSON в ассоциативный массив, а не объект, вы можете использовать 'json_decode ($ array ['page'], true);' – nullability

+0

@nullability Отредактировано для включения, спасибо – sjagr