1
私はajaxでページのインプレッションを収集し、jsonファイルに格納します。ループは新しいページオブジェクトを正しく挿入します。問題は、現在のページオブジェクトを新しいインプレッションで更新したいときです。ループ内に既に存在するオブジェクトの値を更新する代わりに、新しいオブジェクトが作成されます。Foreach - キーが既に存在する場合は値を更新します。
ワークフロー:サーバー上の
- 私はデータ(ページIDと印象を)送信するためにAjaxのポストを作るページが更新されるたびに
- それから私は、すでに保持している.jsonファイルを読み込みますすべてのページについての情報
- ファイルが空の場合、新しい配列を作成し、収集したデータをプッシュします
- 配列に既に同じ値のキー(id)がある場合は、インプレッションキーの値を更新する必要がありますdoesnt仕事)
- 配列が同じ値とキー(id)を保持していない場合、それは新しいページオブジェクトを作成し、その結果(例でページをリフレッシュした後に予想されるキー
idと印象を保存します以下のidの)同じIDの更新が、新しいアイテムとして作成されていない)
[
{
id: "page-1",
impressions: 4
},
{
id: "page-2",
impressions: 2
},
{
id: "page-1",
impressions: 3
},
{
id: "page-3",
impressions: 2
},
{
id: "page-1",
impressions: 2
}
{
id: "page-1",
impressions: 1
},
{
id: "page-2",
impressions: 1
},
{
id: "page-3",
impressions: 1
}
]
...
と [
{
id: "page-1",
impressions: 15
},
{
id: "page-2",
impressions: 3
},
{
id: "page-3",
impressions: 22
}
]
実際の結果(アイテム
コメントと私のループ
// If array exists
if ($pages > -1) {
// Loop thro all the items
foreach ($pages as $item) {
// If item exists, update it. Else create a new one
if ($item -> id == $id) {
$item -> impressions = $item -> impressions + 1;
} else {
$pages[] = array(
'id' => $id,
'impressions' => 1
);
}
}
}
// else create new one
else {
$pages = array();
$pages[] = array(
'id' => $id,
'impressions' => 1
);
}
// Store the array in file
file_put_contents($url, json_encode($pages));
私は時間のために立ち往生し、:)は、また感謝のコメントが追加されますovercomplicateし始めてきました。 – g5wx