Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从json数组获取数据并进行比较_Php_Arrays_Json - Fatal编程技术网

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

Php 从json数组获取数据并进行比较,php,arrays,json,Php,Arrays,Json,您好,我有一个包含数组结构的json数组。我正在尝试根据特定键获取值。例如获得一个名为lower、值为9226的键。我已经实现了每个循环,但我无法进入它。我的比较声明中有一些问题 { "tax_structure": [ { "tax_data": { "lower": 0, "upper": 9225, "tax_rate": 10, "amount": 0

您好,我有一个包含数组结构的json数组。我正在尝试根据特定键获取值。例如获得一个名为lower、值为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
        }

     }
   }
  ?>    



如果($key==“lower”&&&$expense>$value)&($key==“upper”&&&$expense我相信您正在寻找类似于以下内容的东西,那么您就不能这样做。 不需要第二个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
    }
}
$expense=10000;
$str_data=file_get_contents(“data.json”);
$data=json\u decode($str\u data,true);
foreach($data[“tax\u structure”]作为$tax\u data\u对象){
如果($tax_数据对象['tax_数据']['lower']<$expense&$tax_数据对象['tax_数据']['lower']>$expense){
//做事
}
}
编辑

您应该尝试打印($data)。这将显示数据数组的结构

如果您检查数据的结构,上面的代码应该是显而易见的

如果不是,以下是一些进一步学习的来源:


它不工作..我猜它没有进入循环。它没有打印echo命令。这段代码工作吗?也许你的data.json在另一个目录中?它是否显示错误?问题是我们使用循环。你只需要一个循环。现在它为所有json数组打印上下值。你想实现什么?不是吗hanks它是有效的。这是逻辑。如果你能解释的话,循环到json数组似乎很难。我们也可以使用for循环吗?谢谢,在这种情况下,理论上你可以使用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
    }
}