我试图在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将其插入到DB中,使用简单的查询,例如“INSERT INTO table_name” VALUES(value1,value2,value3,...)“
因此,表名将是数组中存在的“itempicture”,值将是数组中键的值。
答案 0 :(得分:1)
这可能会有所帮助。您不希望使用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");
}
}
?>
答案 1 :(得分:0)
我在您的代码中看到了一些问题:
json_decode($data)
的结果转换为数组,然后您尝试使用property-access访问&#34; itempicture&#34;属性。我删除了这个演员。$user
,我猜您打算使用$json_array
。修复此问题之后,代码看起来就像那样,并且可以使用您给定的JSON。我刚刚echo
编了这些值,因为你没有告诉我们你使用了哪个数据库抽象,但你可以使用这些值来填充数据库。
$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;
}