你好我有一个包含数组结构的json数组。我试图获取特定键的值。就像获取名称较低且值为9226的密钥一样。我已经为每个循环实现了但我无法进入它。我的比较声明中存在一些问题。
{
"tax_structure": [
{
"tax_data": {
"lower": 0,
"upper": 9225,
"tax_rate": 10,
"amount": 0
}
},
{
"tax_data": {
"lower": 9226,
"upper": 37450,
"tax_rate": 15,
"amount": 922.50
}
}
]
}
Php文件:
<?php
$expense=10000;
$str_data = file_get_contents("data.json");
$data = json_decode($str_data,true);
foreach ($data["tax_structure"] as $tax_data) {
foreach ($tax_data["tax_data"] as $key => $value) {
if($key=="lower" && $expense>$value) & ($key=="upper" &&$expense<$value)
{
//do something if expenses value falls between the lower and upper limit values of keys
}
}
}
?>
答案 0 :(得分:0)
<?php
$expense = 10000;
$str_data = file_get_contents("data.json");
$data = json_decode($str_data, true);
foreach ($data["tax_structure"] as $tax_data) {
foreach ($tax_data["tax_data"] as $key => $value) {
if ($key == "lower" && $expense > $value) {
echo "Key is lower and the value is " . $value . "<br>";
}
if ($key == "upper" && $expense < $value) {
echo "Key is upper and the value is " . $value . "<br>";
}
}
}
?>
你不能这样做if($key=="lower" && $expense>$value) & ($key=="upper" &&$expense<$value)
答案 1 :(得分:0)
我相信您正在寻找以下内容。 第二个for循环不需要。
$expense = 10000;
$str_data = file_get_contents("data.json");
$data = json_decode($str_data,true);
foreach ($data["tax_structure"] as $tax_data_object) {
if($tax_data_object['tax_data']['lower'] < $expense && $tax_data_object['tax_data']['upper'] > $expense){
// Do stuff
}
}
修改强>
您应该尝试print_r($data);
。这将显示数据数组的结构。
如果检查数据的结构,上面的代码应该很明显。
如果不是,这里有一些进一步学习的来源: