PHPで整数インデックスを使って連想配列にアクセスする方法
PHPの連想配列は通常文字列キーでアクセスしますが、array_keys()関数を利用すれば、すべてのキーを数値インデックス付きの配列として取得できます。これにより、整数インデックス(0, 1, 2…)を使って連想配列の各要素へ順番にアクセスすることが可能になります。
以下に、その基本的な実装例を示します。
サンプルコード1:全てのキーと値を表示する
<?php
$arr = array( "p"=>"150", "q"=>"100", "r"=>"120", "s"=>"110");
$keys = array_keys( $arr );
echo "Array key and value...\n";
for($x = 0; $x < sizeof($arr); $x++ ) {
echo "key: ". $keys[$x] . ", value: ". $arr[$keys[$x]] . "\n";
}
?>まず array_keys() で連想配列のキー一覧を取得し、for ループ内で整数インデックス $x を使ってキーと対応する値を順に出力しています。
出力結果
Array key and value... key: p, value: 150 key: q, value: 100 key: r, value: 120 key: s, value: 110
サンプルコード2:整数インデックスで値を更新する
次の例では、同じ手法を使って特定位置の要素の値を更新しています。$keys[2] や $keys[3] のように整数インデックスでキーを取り出し、そのキーを指定して新しい値を代入しています。
<?php
$arr = array( "p"=>"150", "q"=>"100", "r"=>"120", "s"=>"110");
$keys = array_keys( $arr );
echo "Array key and value...\n";
for($x = 0; $x < sizeof($arr); $x++ ) {
echo "key: ". $keys[$x] . ", value: ". $arr[$keys[$x]] . "\n";
}
$arr[$keys[2]] = "20";
$arr[$keys[3]] = "10";
echo "\nUpdated Array key and value...\n";
for($x = 0; $x < sizeof($arr); $x++ ) {
echo "key: ". $keys[$x] . ", value: ". $arr[$keys[$x]] . "\n";
}
?>出力結果
Array key and value... key: p, value: 150 key: q, value: 100 key: r, value: 120 key: s, value: 110 Updated Array key and value... key: p, value: 150 key: q, value: 100 key: r, value: 20 key: s, value: 10
出力を見ると、キー「r」と「s」に対応する値がそれぞれ「20」「10」に更新されていることが確認できます。
ポイントまとめ
- array_keys():連想配列からすべてのキーを抽出し、数値インデックスを持つ配列として返す関数です。
- sizeof():
count()関数のエイリアスで、配列の要素数を返します。 - この手法を応用すれば、文字列キーを持つ連想配列でも、通常の添字配列と同じように
forループによる走査や要素の更新が行えます。
-
PHPで配列をSimpleXMLに変換する方法
PHPでは、array_walk_recursive() 関数を使うことで、配列を SimpleXML オブジェクト(XMLドキュメント)へ簡単に変換できます。array_walk_recursive() は PHP に標準で組み込まれている関数で、多次元配列のすべての要素を再帰的に処理できるのが特徴です。この関数を使った変換では、配列のキーがXMLの要素名(タグ)に、値がその要素の内容にそれぞれ対応します。 それでは、実際のコード例を見てみましょう。 コード例 <?php $array = array ( name => alex, emp
-
PHPのarray_key_exists()関数とは?使い方とサンプルコードを解説
PHPのarray_key_exists()関数は、指定したキーが配列内に存在するかどうかをチェックするための関数です。キーが存在する場合は true を返し、存在しない場合は false を返します。基本構文array_key_exists(key, arr)パラメータkey − 存在を確認したいキーを指定します。文字列や整数など、配列のキーとして有効な値を指定できます。arr − キーを検索する対象となる配列を指定します。戻り値array_key_exists()関数は、指定したキーが配列内に存在すれば true を、存在しなければ false を返します。使用例以下の例では、連想配列の中