在下面的数组中,我试图提取每种服装类型和第一个" a"和" b"来自"结果"的值数组,然后存储" a"和" b"值到我数据库中的服装类型列。
输出的阵列结构如下
Array ( [0] =>
{
"error": [],
"result": {
"shirts": {
"a": [
"12",
"6",
"6.000"
],
"b": [
"91",
"1",
"1.000"
]
},
"pants": {
"a": [
"41",
"3",
"3.000"
],
"b": [
"55",
"30",
"30.000"
]
}
}
}
)
所以数据应该是这样的:将12插入到a列中的衬衫类型列和b列中的91,并将41插入到a列中的裤型列和b列中的55.
这个foreach循环在哪里出错?
foreach($result['result'] as $clothing) {
$query = 'UPDATE `clothing` SET `a`='.$clothing["a"].' AND SET `B`='.$clothing["a"].' WHERE `type`="'.$clothing[0].'"';
$result = db_query($query);
}
答案 0 :(得分:0)
第一个问题是您的JSON中存在错误,,
b
数组之后的shirts
更多$clothing
。假设你修复了这个问题,那么这段代码会显示你在$result = json_decode($json[0], true);
foreach($result['result'] as $clothing) {
print_r($clothing);
}
中得到的内容(参见答案的底部)。
UPDATE
正如您所看到的,阵列中没有任何一种衣服。因此,您需要更改foreach循环以访问该值。您的AND SET
查询语法也存在问题,不需要foreach($result['result'] as $type => $values) {
$query = 'UPDATE `clothing` SET `a`='.$values["a"][0].', `B`='.$values["b"][0].' WHERE `type`="'.$type.'"';
$result = db_query($query);
}
。所以基于这个和你的要求,你的foreach循环应该是:
Array
(
[a] => Array
(
[0] => 12
[1] => 6
[2] => 6.000
)
[b] => Array
(
[0] => 91
[1] => 1
[2] => 1.000
)
)
Array
(
[a] => Array
(
[0] => 41
[1] => 3
[2] => 3.000
)
[b] => Array
(
[0] => 55
[1] => 30
[2] => 30.000
)
)
输出:
file
答案 1 :(得分:0)
你很接近,当你使用$clothing["a"]
时,你实际上得到了整个“a”数组,而不仅仅是你想要的值。
从我可以告诉你要写的查询是
foreach($result['result'] as $key => $clothing){
$query = 'UPDATE `clothing` SET `a`='.$clothing["a"][0].',
`B`='.$clothing["b"][0].' WHERE `type`="'.$key.'"';
$result = db_query($query);
}
所以在这里,$ key是对象中每个元素的关键,即:衬衫,裤子
$服装是衬衫和裤子的价值,即:阵列,“a”,“b”
所以$ clothing [“a”]选择“a”然后$ clothing [“a”] [0]选择“a”的第一个值,我们使用与“b”相同的原则。您可以通过更改第二个括号[“a”] [1],[“b”] [2]
中的值来选择其他数据“a”/“b”希望这有助于明确这一点