2017-04-22 14 views
0

こんにちは、私は配列構造を含むjson配列を持っています。私は特定のキーに対して値を取得しようとしています。名前を低くして値9226のキーを取得するのと同じです。私は各ループに対して実装しましたが、私はそれに入ることはできません。私の比較声明にいくつかの問題があります。json配列からのデータの取得と比較

{ 
"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

行う傾けます。 2番目の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 
    } 
} 

EDIT

あなたはprint_r($data);を試してみてください。これにより、データ配列の構造が表示されます。

データの構造を調べる場合、上記のコードは明白でなければなりません。

されていない場合は、ここではさらに学習のためのいくつかのソースです:

PHP: Arrays

JSON introduction

+0

ありがとうございます。ロジックを揺する。あなたが説明できるならば、json配列にループするのは難しいようです。 forループも使えますか?ありがとう –

+0

理論的にはこのような状況ではforループを使用できますが、そうすることで利点はありません。それはより多くのコードを必要とし、より遅くなります。 – Thakkie

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)

+0

それは...それは私が推測するループになっていない動作しません。 echoコマンドを出力しません。 –

+0

このコードは機能しますか?たぶんあなたのdata.jsonは別のディレクトリにありますか?それはエラーを表示しますか? – getl0st

+0

問題は我々ループです。 1つのループが必要です。現在、すべてのjson配列の下限値と上限値を出力します。 –

関連する問題