PHP parse_ini_fileを実行するモジュラーコードを作成する方法をいくつか入力し、返された値を使用してJSONデコードを実行します。PHPを使用してINIファイルを解析し、JSON_DECODEを実行します
オートメーションシステムのBACnetポイント用のJSON構造を返すBACnet APIがあります。 JSONデータをデコードして「現在値」フィールドだけを返し、Webページに値を表示する次のコードを書きました。
<?php
$url = "http://hostname.lcl:47800/api/v1/bacnet/devices/10100/objects/0.0";
$json = file_get_contents($url);
$json_data = json_decode($json, true);
echo "<b>Room temperature</b>: ". $json_data["present-value"]. " DEG F";
;?>
これはうまくいきますが、私はこのコードをモジュール化して他の多くの点で使用できるようにしたいと考えています。
私は、他のポイントのリストとAPIのJSONデータを含むURLのリストを含むINIファイルを作成しました。私は何をしたいのですが、リスト内の各点の現在値を取得し、ポイントの名前で変数を作成し、「現在に等しく、それを設定するには、INIファイルを使用している
## BACnet Configuration File
# BACnet Object URLs from WACNET Browser API
[bacnet]
SEA_RMT = http://hostname.lcl:47800/api/v1/bacnet/devices/10100/objects/0.0
SEA_SRV_SEA_SV1_01_EXHT = http://hostname.lcl:47800/api/v1/bacnet/devices/10100/objects/0.3
SEA_SRV_SEA_SV1_02_EXHT = http://hostname.lcl:47800/api/v1/bacnet/devices/10100/objects/0.4
SEA_SRV_SEA_SV1_03_EXHT = http://hostname.lcl:47800/api/v1/bacnet/devices/10100/objects/0.5
「値」フィールド。次に、HTMLページのPHP変数を使用してポイントを参照することができます。
<?php echo "$SEA_SRV_SEA_SV1_01_EXHT";?>
私は以下のコードで開始しましたが動作しません。
<?php
// Parse the settings file
$bacnetini = parse_ini_file('/var/www/config/bacnet.ini');
// Parse the keys to variables and add data
foreach ($bacnetini as $key => $value) {
$url = $value;
$json = file_get_contents($url);
$json_data = json_decode($json, true);
$$key = $json_data;
}
?>
私はここからどこに行くのかわからないので、これを達成するための最善の方法についていくつかの意見を頂きたいと思います。
私はこれらの他のスタックオーバーフローに関する質問を見てきましたが、どのように一緒に収まるかを知る方法はわかりません。
配列? –
ありがとうございました。代わりに配列を使用する方法はありますか?もっと詳しく説明できますか? –
ループの前に配列を空の配列として定義します( '$ bacnetData = [];'); '$$ key = $ json_data;の代わりに' $ bacnetData [$ key] = $ json_data; '<?php echo $ bacnetData [' SEA_SRV_SEA_SV1_01_EXHT '] ";?>' –