PHPの配列の最初のキーを取得(array_key_first関数)

PHPのarray_key_first関数について書いています。
この関数を使うと、配列の一番最初のキーを取得することができます。

連想配列や数値添字の配列など、最初の要素のキーを知りたいときに使うことができます。
array_key_first関数はPHP7.3から導入されています。

array_key_first関数とは?

array_key_first関数は、指定した配列の 最初のキー を取得するための関数です。
最初のキーの値だけを返してくれます。

基本的な構文

mixed array_key_first ( array $array )

引数

  • $array: 最初のキーを取得したい配列を指定します。

返り値

  • 配列に要素がある場合: 配列の最初のキーを返します。キーは文字列または整数の可能性があります。
  • 配列が空の場合: null を返します。

注意点: この関数はPHP 7.3.0以降で利用可能です。それより前のバージョンでは使用できません。

array_key_first関数の使い方

実際にコードを見ていきましょう。

例1:連想配列の場合

<?php

// 果物の価格を格納した連想配列を定義します。
$prices = [
    'apple' => 150,
    'orange' => 100,
    'grape' => 300
];

// array_key_first関数で、$prices配列の最初のキーを取得します。
$firstKey = array_key_first($prices);

// 取得したキーを出力します。
echo "最初のキーは: " . $firstKey . "\n"; // apple

// 比較のために、配列全体も表示してみます。
print_r($prices);

?>

実行結果

最初のキーは: apple
Array
(
    [apple] => 150
    [orange] => 100
    [grape] => 300
)

このコードでは、まず$pricesという連想配列を定義しています。
次に、array_key_first関数に$prices配列を渡して、最初のキーを取得し、結果を変数$first_keyに代入しています。

echo$first_keyの内容を出力すると、配列の最初のキーであるappleが表示されます。
最後にprint_r で配列の内容を表示していますが、array_key_first関数を使っても配列の内容や順番が変わっていないことが確認できます。

例2:キーが数値の配列の場合

array_key_first関数は、キーが数値の場合でも問題なく動作します。

<?php

// ユーザー名のリストを格納した数値添字の配列を定義します。
// この場合、キーは 0 から始まる整数です。
$users = [
    'Alice', // キーは 0
    'Bob',   // キーは 1
    'Charlie' // キーは 2
];

// array_key_first関数で、$users配列の最初のキーを取得します。
$firstKey = array_key_first($users);

// 取得したキーを出力します。
echo "最初のキーは: " . $firstKey . "\n"; // 0
var_dump($firstKey); // 型も確認 (int)

?>

実行結果

最初のキーは: 0
int(0)

数値インデックスの配列$usersを定義しています。
配列の最初の要素 'Alice' のキーは0です。

array_key_first関数を使って最初のキーを取得すると、0が返ってきます。
var_dumpで確認すると、型が整数 (int) であることも分かりました。

例3:空の配列の場合

空の配列をarray_key_first関数に渡すと、null が返ってきます。

<?php

// 空の配列を定義します。
$emptyArray = [];

// array_key_first関数で、空の配列の最初のキーを取得しようとします。
$firstKey = array_key_first($emptyArray);

// 取得した結果を出力します。
echo "空の配列の場合: ";
var_dump($firstKey); // NULL

?>

実行結果

空の配列の場合: NULL

空の配列$empty_arrayarray_key_first関数に渡すと、取得できるキーが存在しないため、返り値はnullになりました。

reset関数・key関数との違いは?

PHP 7.3より前のバージョンでは、配列の最初のキーを取得するために reset関数と key関数を組み合わせて使う方法が一般的でした。

<?php

$prices = [
    'apple' => 150,
    'orange' => 100,
    'grape' => 300
];

// reset関数で内部ポインタを先頭に移動させます。
reset($prices);
// key関数で現在のポインタ位置(先頭)のキーを取得します。
$firstKeyOld = key($prices);

echo "reset+keyでの最初のキー: " . $firstKeyOld . "\n"; // apple

?>

この方法でも最初のキーを取得できますが、reset関数は 配列の内部ポインタを先頭に移動させてしまう という副作用があります。
一方、array_key_first関数は配列の内部ポインタを 変更しません

そのため、他の処理に影響を与えることなく、安全に最初のキーを取得できます。

まとめ

PHP7.3から導入された array_key_first関数は、配列の最初のキーをシンプルかつ安全に取得できる便利な関数です。

・連想配列、数値添字配列の両方で使えます。
・空の配列に対しては `null` を返します。
・配列の内部ポインタを変更しないため、副作用の心配がありません。

配列の最初のキーだけを知りたい、という場面で使っていきましょう。

PHP

コメント