从json数组中获取数据并进行比较

时间:2017-04-22 15:33:39

标签: php arrays json

你好我有一个包含数组结构的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
        }

     }
   }
  ?>    

2 个答案:

答案 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);。这将显示数据数组的结构。

如果检查数据的结构,上面的代码应该很明显。

如果不是,这里有一些进一步学习的来源:

PHP: Arrays

JSON introduction