Получить значения из многомерного массива |JSON - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь получить доступ к значениям этого массива в PHP.Это многомерный массив.Мне нужно получить значения из массива и вставить его в БД.Вставка - вторая часть проблемы.Первая часть - это получение ценностей.

JSON -

{
"itempicture":[
  {
     "status":"3"
  },
  {
     "ItemCode":"001",
     "ItemImage":"image1",
     "ItemCategory":"shirt",
     "ShowOnPOS":"Yes",
     "LastModifiedOn":"2018-06-02 11:53:57"
  },
  {
     "ItemCode":"002",
     "ItemImage":"image2",
     "ItemCategory":"shirt",
     "ShowOnPOS":"Yes",
     "LastModifiedOn":"2018-06-02 11:53:57"
  }]}

Здесь «itempicture» - это имя таблицы, а все ключи, т. Е. «Itemcode», «itemimage и т. Д., Являются столбцами SQL».

Мне нужно получить значения столбцов SQL и вставить их в БД.

Пока что я пробовал это -

 $data = file_get_contents($url); 
 $json_array = (array)(json_decode($data));

 print_r($json_array);


foreach($user->itempicture as $mydata)

{
     echo $mydata->itempicture . "\n";
     foreach($mydata->itempicture as $values)
     {
          echo $values->itempicture . "\n";
     }
}  

Использование MYSQL в объектно-ориентированном методе длявставьте его в БД с помощью простого запроса, например «INSERT INTO table_name VALUES (value1, value2, value3, ...)» *

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

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Есть некоторые проблемы, которые я видел в вашем коде:

  • Вы приводите результат json_decode($data) к массиву, а затем позже вы пытаетесь использовать свойство-access для доступа к "itempicture"" имущество.Я удалил это приведение.
  • В первом foreach используйте переменную $user, я думаю, вы хотели использовать $json_array.
  • Внутренний цикл на самом деле не используется, вы можете получить доступсвойства напрямую

После исправления этой проблемы код выглядит так и работает с вашим данным JSON.Я только echo -значил значения, так как вы не сказали нам, какую абстракцию DB вы используете, но вы можете использовать значения для заполнения базы данных.

$data = file_get_contents($url);
$json_array = (json_decode($data));

print_r($json_array);

foreach($json_array->itempicture as $mydata)
{
    if (!property_exists($mydata, 'ItemCode')) {
        // Ignore entries which are invalid (have no ItemCode property)
        continue;
    }
    echo implode(' - ', [
        $mydata->ItemCode,
        $mydata->ItemImage,
        $mydata->ItemCategory,
        $mydata->ShowOnPOS,
        $mydata->LastModifiedOn,
    ]), PHP_EOL;
}
0 голосов
/ 12 июня 2018

Это может помочь.Вместо циклического обхода свойств с foreach и печати вы захотите использовать их для создания массива, который будет использоваться в качестве параметров для подготовленного запроса, или для непосредственного построения запроса.Но это показывает вам, как получить доступ к этим свойствам -

<?php

$j='{
"itempicture":[
  {
     "status":"3"
  },
  {
     "ItemCode":"001",
     "ItemImage":"image1",
     "ItemCategory":"shirt",
     "ShowOnPOS":"Yes",
     "LastModifiedOn":"2018-06-02 11:53:57"
  },
  {
     "ItemCode":"002",
     "ItemImage":"image2",
     "ItemCategory":"shirt",
     "ShowOnPOS":"Yes",
     "LastModifiedOn":"2018-06-02 11:53:57"
  }]}';


  $jo=json_decode($j);

  print("status ".$jo->itempicture[0]->status."\n");
  for($i=1;$i<count($jo->itempicture);$i++){
      foreach($jo->itempicture[$i] as $prop=>$val){
          print($prop." = ".$val."\n");
      }
  }

 ?>
...