この記事では、PHP セッション配列を操作する際の一般的な問題、つまり、他の変数を保持したまま特定の変数を削除する方法について説明します。
問題:
次のロジックを利用する PHP コードは、セッションに変数を追加および削除しようとします:
if(isset($_GET['name'])) { $name = isset($_SESSION['name']) ? $_SESSION['name'] : array(); $name[] = $_GET['name']; $_SESSION['name'] = $name; } if (isset($_POST['remove'])) { unset($_SESSION['name']); }
ユーザーが「」を選択したときRemove」というコードは、$list2 に示されている変数をセッションから削除しようとしますが、代わりに配列内のすべての変数を削除します。
解決策:
のみを削除する特定の変数を指定するには、削除ロジックを次のように変更します。
if (isset($_POST['remove'])) { $key = array_search($_GET['name'], $_SESSION['name']); if ($key !== false) { unset($_SESSION['name'][$key]); $_SESSION["name"] = array_values($_SESSION["name"]); } }
このコードは、array_search() を使用して、削除する変数に対応する配列キーを検索します。次に、変数の設定を解除し、array_values() を使用して配列のインデックスを再作成します。
説明:
$_SESSION['name'] の設定を解除すると、追加されたすべての変数を含むセッション変数全体。特定の変数のみを削除するには、array_search() を使用して配列内のそのインデックスを見つける必要があります。このインデックスが存在する場合 (つまり、$key が false でない場合)、適切な要素の設定解除に進むことができます。
後続の行は配列のインデックスを再構築し、配列キーが連続した状態を維持し、その後の潜在的な問題を回避します。追加または変更。
以上が他の変数を削除せずに、PHP セッション配列から特定の変数を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。