PHPで配列のキーをリセットする方法【array_values()関数の使い方】
PHPでは、array_values()関数を使うことで、配列のキーを簡単にリセット(振り直し)できます。この関数は、元の配列からすべての値を取り出し、0から始まる連番の新しいキーを割り当てた配列を返します。
array_values()関数とは
array_values()は、文字列キーを持つ連想配列や、飛び飛びの数値キーを持つ配列など、任意のキー構成の配列を受け取り、値だけを抽出してインデックス(0, 1, 2, ...)を振り直した新しい配列を返す組み込み関数です。元の配列そのものは変更されず、結果は新しい配列として返される点に注意してください。
例1:文字列キーの配列をリセットする
まずは、文字列をキーとする連想配列のキーをリセットしてみましょう。
<?php $arr = array( "p"=>"150", "q"=>"100", "r"=>"120", "s"=>"110"); var_dump ($arr); $res = array_values($arr); var_dump ($res); ?>
出力結果
array(4) {
["p"]=>
string(3) "150"
["q"]=>
string(3) "100"
["r"]=>
string(3) "120"
["s"]=>
string(3) "110"
}
array(4) {
[0]=>
string(3) "150"
[1]=>
string(3) "100"
[2]=>
string(3) "120"
[3]=>
string(3) "110"
}
上記の出力を見ると、元の配列では「p」「q」「r」「s」という文字列キーが使われていましたが、array_values()を適用した後は「0」から「3」までの連番キーに置き換わっていることがわかります。
例2:不連続な数値キーの配列をリセットする
次に、キーが飛び飛びの数値になっている配列の例を見てみましょう。
<?php $arr = array( 8=>"Ben", 4=>"Kevin", 7=>"Mark", 3=>"Hanks"); var_dump ($arr); $res = array_values($arr); var_dump ($res); ?>
出力結果
array(4) {
[8]=>
string(3) "Ben"
[4]=>
string(5) "Kevin"
[7]=>
string(4) "Mark"
[3]=>
string(5) "Hanks"
}
array(4) {
[0]=>
string(3) "Ben"
[1]=>
string(5) "Kevin"
[2]=>
string(4) "Mark"
[3]=>
string(5) "Hanks"
}
この例では、元の配列のキーは「8」「4」「7」「3」とバラバラでしたが、array_values()によって「0」から始まる規則的な連番にリセットされました。
まとめ
配列のキーをリセットしたい場合は、array_values($arr)を呼び出すだけで実現できます。特に、unset()で要素を削除した後にキーが飛び飛びになってしまった配列を整えたい場合や、連想配列を通常のインデックス配列へ変換したい場合に非常に便利な関数です。
-
PHPのreset()関数とは?配列の内部ポインタを先頭に戻す方法
PHPのreset()関数は、配列の内部ポインタを最初の要素に移動させるための関数です。実行すると、配列の先頭要素の値を返します。また、配列が空の場合にはFALSEを返します。 reset()関数は、current()やnext()などの配列操作関数と組み合わせることで、配列の走査を柔軟に制御できます。特に、foreachループを使わずに配列を順番に処理したい場合や、配列の先頭要素を取得したい場合に便利です。 構文 reset(arr) パラメータ arr − 操作対象となる配列を指定します。 戻り値 reset()関数は、配列の最初の要素の値を返します。配列が空の場
-
C#で文字列を文字列配列の要素に分割する方法
C#では、Split()メソッドを使うことで、1つの文字列を簡単に複数の要素(文字列配列)に分割できます。この記事では、基本的な使い方から実際のコード例まで、わかりやすく解説します。手順1:分割したい文字列を用意するまず、分割対象となる文字列を変数に格納します。string str = Hello World!;手順2:Split()メソッドで文字列を分割する次に、Split()メソッドを使って、区切り文字(ここでは半角スペース)を指定し、文字列を個別の要素に分割します。結果は文字列配列として返されます。string[] res = str.Split( );完全なサンプルコード以下は、C#で