从多维数组| json获取值

bvuwiixz  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(401)

我试图用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”、“itemage”等是sql列。
我需要获取sql列的值并将其插入db。
到目前为止我试过这个-

$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将其插入db,并使用类似“insert into table\u name values(value1,value2,value3,…”的简单查询
因此表名将是数组中的“itempicture”,值将是数组中键的值。

nxagd54h

nxagd54h1#

这也许有帮助。而不是用 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");
      }
  }

 ?>
cnh2zyt3

cnh2zyt32#

我在您的代码中看到了一些问题:
你投的结果 json_decode($data) 对于数组,则稍后尝试使用属性访问来访问“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;
}

相关问题