【php】keyで配列からキーを取り出す方法

php-keyphp
書いてる人
あいりゅー

プログラミングを学びながら更新しています。
iPhone/iPad/Mac/Apple WatchなどのApple製品はこちらで主に更新しています。
麻雀の反省をひたすら掲載してるブログもやってます。

あいりゅーをフォローする

このページについて

このページではphpで配列からキーを取り出すkeyの使い方解説を掲載しています。

key

keyは指定した連想配列の現在位置のキーを返します。

key(配列);

配列またはオブジェクトを入れることで数字/文字/nullのどれかを返してくれます。実際に使う時は以下のように書きます。

$a = ['name'=>'カメックス','type'=>'みず'];
$b = key($a); //nameが入る

このようにシンプルに使うだけでOKです。ただしこの関数を含めた一部の関数は内部ポインタの存在を知っておく必要があります。内部ポインタとはその名の通り、目には見えないけど内部では存在していて機能しているポインタのことです。key関数でいうと連想配列を調べる時にこの内部ポインタがいる現在位置のキーを返してくれます。

なので上の例ではnameが入ることになります。その次のキーを取得したい場合は、内部ポインタを移動させる必要があります。そんな時に使うのはnext関数をはじめとした配列用のポインタ関連関数です。今回はnextを使います。nextはその名の通り、内部ポインタを次の要素へと動かしてくれます。

$a = ['name'=>'カメックス','type'=>'みず'];
$b = key($a); //name
next($a);
$c = key($a); //type

このようにポインタを移動させることで、現在位置を変更させることができます。その結果、取得できるキーや要素を変更させることができます。

以下は簡単なサンプルになります。内容は全てのキーを取得するという、単純なものです。

$a = ['name1'=>'カメックス',
'name2'=>'ラプラス',
'name3'=>'カイオーガ'];
for($i=0,$c=count($a);$i<$c;$i++) {
$b=key($a);
echo $b;
next($a);
}

結果はname1name2name3name4となります。ちなみにこんな複数行使って書かなくても、foreachならものすごくシンプルに書けます。というわけでこのkeyを使ったもう少し細かい使い方が以下になります。

$a=['name1'=>'カメックス,
'name2'=>'ラプラス',
'name3'=>'カイオーガ',
'name4'=>'カメックス'];
while($b = current($a)) {
if ($b == 'カメックス') {
echo key($a);
}
next($a);
}

連想配列自体はここまで使ってきたものと同じで、name1から4まで順番に入っていてそれぞれ名前が入っています。ただし今回はカメックスが2回登場しています。

そしてwhile文で式を$bにcurrent($a)を入れるというものにします。これで配列にあるアイテムの数だけループ処理が行われます。次にif文で、「値がカメックスがどうかを調べる」という条件にしてtrueだった場合はそのままechoでkey($a)としています。これはkey関数がそのまま機能するだけですね。

そして最後にnextで$aの内部ポインタを次へ進めます。そしたらループの最初に戻り、今度はname2のラプラスが$bに入ります。そしてif文で評価して、違うのでnextへ。それを全部で4回繰り返して最終的にname1name4という出力となります。

まとめ

key関数は単体ではあまり使い所はありませんが、内部ポインタを移動させる関数と合わせて使うことで色々と用途は広がります。内部ポインタ関連関数も一緒に使い方を覚えておきましょう。

phpの基礎
phpとは?JavaScriptとの違いは?みたいなことから、基本の書き方などを解説。
echoとprint
画面に文字を出力する2種類の言語構造の使い方
変数
phpで使える変数の扱い方などを解説しています。
変数のスコープ(有効範囲)
変数のスコープについての解説です。
var_dump
変数の情報を見ることができる関数
print_r
変数の情報をわかりやすい形式で表示する関数
配列と連想配列
配列と連想配列の書き方と、便利な関数の解説など。
key
連想配列のキーを返してくれます。内部ポインタ関係あり。
count
配列や連想配列の要素数を数えてくれる関数の使い方解説。
ソート関数
配列に対してソートを行う関数の中から、代表的な5つの使い方解説です。
array_reverse
配列の中身の順番を反転させる関数です。
array_chunk
配列を指定した数で分割させるarray_chunk関数の使い方解説です。
array_combine
2つの配列を足して1つの連想配列にする関数です。
array_diff
2つの配列を比較して、存在しない値を出力する関数
array_push
配列に対して後方に要素を追加する関数
array_unshift
配列に対して先頭に要素を追加する関数。
array_shift
配列の先頭の要素を取り出す関数。
array_merge
複数の配列を統合して1次元の配列にする関数
array_intersect
2つの配列を比較して、両方に共通するものを出力する関数
include
includeを使って別のphpファイルを読み込む方法の解説。
if文
if文を使って処理を変更させる方法の解説。
switch文
switch文を使って複数の処理分岐を行わせたい時に使います。
forループ
forループを使って同じ処理を行わせる方法の解説です。
whileループ
whileループを使って同じ処理を行わせる方法の解説と注意点。
do-whileループ
do-whileループを使って同じ処理を行わせる方法の解説です。
foreachループ
foreachループを使って配列内のアイテム全てに処理を行う方法の解説です。
continue
ループ処理の残りをスキップしつつ、ループの先頭に戻る制御構造
ループのネスト構造(入れ子)
ループの中にループを入れる書き方や考え方の解説。
function
functionを使って自作の関数を作成・使用する方法の解説。
引数の種類と書き方解説
functionで扱う引数の種類と書き方を解説
return
returnの使い方と関数での使い方解説。
class
classを作成して変数と関数を1つにまとめる方法と使い方の解説。
constructとdestruct
classのインスタンス作成と同時に処理を行うconstructと、スクリプトの終了と同時に実行するdestructの解説です。
インターフェイス
インターフェイスという用語の解説と、実際の使い方解説
トレイト
コードを再利用するのに便利なトレイトの解説です。
列挙型
プログラム中で使う変数名をあらかじめ定義しておく。そんな感じの型。
PDOを使ってMySQLへ接続
PDOを使ってMySQLへ接続し、データを取得する方法の解説です。
データの加工と表示
PDOでデータベースから取得したデータを加工して表示する方法の解説です。
HTMLフォームのデータ受け取りと表示
HTMLで作ったフォームからのデータの受け取り方法と、その表示方法の解説です。
タイトルとURLをコピーしました