2013-10-10 3 views
0

Как импортировать имя объекта stdClass в базу данных?PHP/JSON - как импортировать имя объекта stdClass?

объект

JSON содержит:

[items] => stdClass Object 
        ( 
    [bigitems] => stdClass Object 
        (
         [nameitem1] => stdClass Object 
          (
           [height] => 100 
           [width] => 137 
      ) 
      [nameitem2] => stdClass Object 
          (
           [height] => 506 
           [width] => 678 
      ) 
      [nameitem3] => stdClass Object 
          (
           [height] => 330 
           [width] => 845 
      ) 
      [nameitem3] => stdClass Object 
          (
           [height] => 793 
           [width] => 788 
      ) 
     ) 
) 

Я хочу, чтобы хранить в базе данных только значение nameitem1 - nameitem4

Nameitems, например, - коробка, случай - другое слово не числовой диапазон Bigitems это число

[items] => stdClass Object 
        ( 
    [4856985254] => stdClass Object 
        (
         [box] => stdClass Object 
          (
           [height] => 100 
           [width] => 137 
      ) 
      [case] => stdClass Object 
          (
           [height] => 506 
           [width] => 678 
      ) 
      [paper] => stdClass Object 
          (
           [height] => 330 
           [width] => 845 
      ) 
     ) 

для этой операции я использую этот скрипт. скрипт работает, но отсутствует магазин часть

function wwwResponse($url, $isUrl = true) 
{ 
    if ($isUrl && !ini_get('allow_url_fopen')) { 
    throw new Exception('allow_url_fopen = Off'); 
    } 

    $content = file_get_contents($url); 
    if ($isUrl) { 
    $status_code = substr($http_response_header[0], 9, 3); 
    if ($status_code != 200) { 
     throw new Exception('Got status code ' . $status_code . ' expected 200'); 
    } 
    } 

    $json = json_decode($content); 
    if (!$json) { 
    throw new Exception('Response contained an invalid JSON response'); 
    } 

    if ($json->status != 'ok') { 
    throw new Exception($json->status_code); 
    } 

    return $json; 
} 

// --------------------------DB------------------------------- 
mysql_connect("localhost", "baze", "xxxxxxx"); 
mysql_select_db("baze"); 
//------------------------------------------------------------ 

    try { 
    $json = wwwResponse($url); 
     print_r ($json); 
    } 
    catch (Exception $e) { 
    echo $e->getMessage(); 
} 
echo "<pre>\n"; 
} 

спасибо за помощь

ответ

1
$items = json_decode(json_encode($obj->items), true); 
$names = array_keys((Array) $items['4856985254']); 

// will return Array("nameitem1","nameitem2","nameitem3") 
+0

это не работает, потому что большие предметы - это число. – Hunt3r

+0

@ Hunt3r, пожалуйста, уточните мое обновление. – Peter

+0

получил ошибку: Примечание: Неопределенный индекс: 4856985254 – Hunt3r

0
$vars = get_object_vars($items->bigitems); 
foreach ($vars as $key => $value) 
... insert $key .... 
1

Если это поможет вам может декодировать JSON таким образом, чтобы получить массив вместо объекта STD:

$result = json_decode($json, TRUE); 

В любом случае вы можете сделать это:

foreach ($data as $d) { 
    foreach ($d as $actual) { 
     //echo stuff here 

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