だからここに私のコードがあります:
foreach ($result->devices as $device) {
$flag = false;
foreach ($device as $key => $value) {
if(!$flag){
var_dump($key);
$flag = true;
}
var_dump($value);
}
}
私が達成しようとしているのは、キー(説明、ブランドなど)を1回だけ印刷し、見つかったすべてのデバイスのすべてのキーの値を印刷することです。これは、最終的に.csvとして保存するためです。
注:$ result =多次元配列で、デバイスセクションのみに関心があるため、$result->devices
。これが現在機能する方法は、見つかったすべてのデバイスの最初のキーのみを印刷することです。現在、次のようになっています。
string 'deviceId' (length=8) // keeps getting repeated
int 4268
string 'beschrijving nr 53' (length=18)
...
string 'deviceId' (length=8) // keeps getting repeated
int 4267
string 'Weer een tooltje' (length=16)
私が取得しようとしているのは、次のようなものです。
string 'deviceId' (length=8)
string 'description' (length=??)
string 'status' (length=??)
... // rest of keys, followed by devices
int 4268
string 'beschrijving nr 53' (length=18)
... // rest of values, followed by other devices
int 4267
string 'Weer een tooltje' (length=16)
操作の順序が間違っていたり、特定のループに何かを出し入れしたりするような単純なものだと確信していますが、さまざまなバリエーションを試した後、私は賢明ではありません。
ですから、この謎を解くことができる人に感謝します。
それで、あなたのデータはこのように見えると思いますか?
$result = (object)[];
$result->devices = [
['deviceId' => 1, 'description' => 'desc1', 'status' => 'status14'],
['deviceId' => 2, 'description' => 'desc2', 'status' => 'status15'],
['deviceId' => 3, 'description' => 'desc3', 'status' => 'status16'],
['deviceId' => 4, 'description' => 'desc2', 'status' => 'status17'],
];
次に、そこからCSVファイルを作成するには、次のようにします。
$fp = fopen('csv.csv', 'w+');
foreach($result->devices as $i => $device)
{
// First row? Write headers (keys) first!
if($i == 0) fputcsv($fp, array_keys($device));
// Write data rows
fputcsv($fp, array_values($device));
}
fclose($fp);
このように、あなたはこれを得るでしょう:
deviceID,description,status
1,desc1,status14
2,desc2,status15
3,desc3,status16
4,desc4,status17
これはあなたが必要なものですか?
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加