[解決済み] PHPで配列から要素を削除する
質問
PHPで配列から要素を削除する簡単な方法はありますか?
foreach ($array)
は、もはやその要素を含まないのですか?
に設定するのが良いかと。
null
で済むのですが、どうやらうまくいかないようです。
解決方法は?
配列の要素を削除する方法はさまざまで、ある特定のタスクに役立つものとそうでないものがあります。
配列要素を1つだけ削除する
配列の要素を1つだけ削除したい場合は、以下のようにします。
unset()
またはその代わりに
\array_splice()
.
もし、値がわかっていて、要素を削除するためのキーがわからない場合は、次のようにします。
\array_search()
でキーを取得します。これは、その要素が複数回出現しない場合にのみ機能します。
\array_search
は最初のヒットだけを返します。
unset()
を使用する場合は注意が必要です。
unset()
の場合、配列のキーは変更されません。もしキーのインデックスを作り直したい場合は
\array_values()
後
unset()
これは、すべてのキーを0から始まる数値の列挙されたキーに変換します。
コードです。
$array = [0 => "a", 1 => "b", 2 => "c"];
unset($array[1]);
// ↑ Key which you want to delete
出力します。
[
[0] => a
[2] => c
]
\array_splice()
メソッド
を使用する場合
\array_splice()
とは異なり、キーは自動的に再インデックス化されますが、 連想キーは変更されません。
\array_values()
これは、すべてのキーを数値キーに変換します。
\array_splice()
が必要です。
オフセット
ではなく
キー
を2番目のパラメータとして使用します。
コード
$array = [0 => "a", 1 => "b", 2 => "c"];
\array_splice($array, 1, 1);
// ↑ Offset which you want to delete
出力します。
[
[0] => a
[1] => c
]
array_splice()
と同じです。
unset()
は、参照によって配列を取ります。これらの関数の戻り値を配列に代入することはありません。
複数の配列要素を削除する
複数の配列要素を削除したいが、そのために
unset()
または
\array_splice()
を複数回使用することができます。
\array_diff()
または
\array_diff_key()
は、削除したい要素の値やキーがわかっているかどうかによります。
\array_diff()
メソッド
削除したい配列要素の値がわかっている場合は
\array_diff()
. 先ほどと同様に
unset()
を実行しても、配列のキーは変わりません。
コード
$array = [0 => "a", 1 => "b", 2 => "c", 3 => "c"];
$array = \array_diff($array, ["a", "c"]);
// └────────┘
// Array values which you want to delete
出力します。
[
[1] => b
]
\array_diff_key()
メソッド
削除したい要素のキーがわかっている場合、そのキーに対応するために
\array_diff_key()
. このとき、第2パラメータに値としてではなく、キーとして渡すことを確認する必要があります。キーは再インデックス化されません。
コードです。
$array = [0 => "a", 1 => "b", 2 => "c"];
$array = \array_diff_key($array, [0 => "xy", "2" => "xy"]);
// ↑ ↑
// Array keys which you want to delete
出力します。
[
[1] => b
]
を使いたい場合は
unset()
または
\array_splice()
同じ値を持つ複数の要素を削除する場合は、次のようにします。
\array_keys()
を使って、特定の値に対応するすべてのキーを取得し、すべての要素を削除します。
関連
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み】XAMPPエラー: www.example.com:443:0 サーバー証明書に、サーバー名と一致するIDが含まれていません。
-
[解決済み】Xampp ローカルホスト/ダッシュボード
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] PHP 配列をキーではなく値で削除する
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み】(おそらく)連想配列の最初のキーを取得しますか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】不明なMySQLサーバーのホスト
-
[解決済み】「セッションキャッシュリミッターを送信できません - ヘッダーはすでに送信されています」【重複】。
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】子テーマのCSSが親テーマをオーバーライドしない
-
[解決済み] PHP - ストリームを開くのに失敗しました : そのようなファイルまたはディレクトリがありません。
-
[解決済み】警告: file_get_contents(): https:// ラッパーがサーバー構成ですべて無効になっています。
-
[解決済み] キーに基づいて配列の要素を削除するには?[重複]する