【PHP8.x】array_key_last関数の使い方

作成日: 更新日:

『array_key_last関数は、指定された配列の最後のキーを取得する処理を実行する関数です。この関数は、引数に与えられた配列の最後の要素に対応するキーを返します。対象の配列が空でなければ、その最後のキーを整数または文字列として取得できますが、配列が空の場合はnullを返します。例えば、['a' => 1, 'b' => 2, 'c' => 3]という連想配列に対して使用すると、文字列の'c'が返されます。一方、[100, 200, 300]のような数値添字配列の場合は、最後の要素のキーである整数の2が返されます。この関数の重要な特徴は、配列の内部ポインタを移動させない点です。これにより、foreachループなどで配列を処理している最中にこの関数を呼び出しても、ループの動作に影響を与えることがありません。そのため、配列の状態を変更することなく、安全に最後のキー情報だけを参照したい場合に非常に便利な関数です。』

基本的な使い方

構文(syntax)

<?php

$array = ['a' => 1, 'b' => 2, 'c' => 3];
$key = array_key_last($array);

引数(parameters)

array $array

  • array $array: 検索対象となる配列

戻り値(return)

string|int|null

指定された連想配列の最後のキーを返します。キーが存在しない場合は null を返します。

サンプルコード

PHP配列の最後のキーと値を取得する

<?php

/**
 * 配列の最後のキーと値を取得して表示する
 *
 * この関数は、指定された配列の最後のキーを array_key_last() を使って取得し、
 * そのキーに対応する値とともに表示します。
 *
 * @param array $array 対象の配列
 * @return void
 */
function displayLastElementInfo(array $array): void
{
    // 配列の最後のキーを取得します。
    // 配列が空の場合、null が返されます。
    $lastKey = array_key_last($array);

    if ($lastKey !== null) {
        // 取得したキーを使って最後の値を取得します。
        $lastValue = $array[$lastKey];

        echo "対象の配列: " . print_r($array, true);
        echo "最後のキー: " . $lastKey . PHP_EOL;
        echo "最後の値: " . $lastValue . PHP_EOL;
    } else {
        echo "対象の配列は空です。" . PHP_EOL;
    }
    echo "------------------------" . PHP_EOL;
}

// 1. 数値キーの配列(インデックス配列)の例
$fruits = ['apple', 'orange', 'grape'];
displayLastElementInfo($fruits);

// 2. 文字列キーの配列(連想配列)の例
$user = [
    'name' => 'Taro Yamada',
    'age' => 30,
    'country' => 'Japan',
];
displayLastElementInfo($user);

// 3. 空の配列の例
$emptyArray = [];
displayLastElementInfo($emptyArray);

?>

array_key_last()関数は、指定された配列における最後の要素のキーを取得するためのPHP関数です。

この関数は、引数としてキーを取得したい対象の配列を一つ受け取ります。戻り値として、配列の最後のキーを返します。キーの型は、数値キーの配列であれば整数(int)、文字列キーの連想配列であれば文字列(string)になります。重要な点として、引数に渡された配列が空の場合、最後のキーは存在しないため null を返します。

サンプルコードでは、まずarray_key_last()を使って配列の最後のキーを取得しています。そして、取得したキーが null でないことを確認した上で、そのキーを使って $array[$lastKey] という形式で対応する値を取り出し、キーと値をあわせて表示しています。数値キーの配列では最後のキー「2」が、文字列キーの連想配列では最後のキー「country」が取得されることがわかります。配列が空の場合は null が返されるため、配列が空である旨のメッセージが表示されます。この関数により、配列の最後の要素に簡単にアクセスできます。

array_key_last関数は、配列の最後の「キー」を返します。最後の「値」を直接取得する関数ではない点に注意が必要です。値を取得するには、この関数で得られたキーを使って配列にアクセスします。最も重要な点は、空の配列を渡すと戻り値がnullになることです。サンプルコードのように、必ずnullでないことを確認してからキーを使用してください。このチェックを怠ると、nullをキーとして配列にアクセスしようとしてしまい、警告の原因となります。この関数は、数値キーの配列と文字列キーの連想配列のどちらにも正しく利用できます。

PHPで配列の最後のキーを取得する

<?php

declare(strict_types=1);

/**
 * array_key_last() を使用して配列の最後のキーを取得するサンプル関数
 *
 * @param array $array キーを取得したい配列
 * @return void
 */
function displayLastArrayKey(array $array): void
{
    // array_key_last() は、指定された配列の最後のキーを返します。
    // 配列が空の場合は null を返します。
    $lastKey = array_key_last($array);

    if ($lastKey === null) {
        echo "対象の配列は空です。\n";
    } else {
        // var_export() を使うと、キーの型(int or string)も分かりやすく表示できます。
        echo "配列の最後のキーは: " . var_export($lastKey, true) . "\n";
    }
}

// --- 実行例 ---

// 1. 連想配列の場合 (キーは文字列)
$fruits = [
    'apple' => 'りんご',
    'orange' => 'みかん',
    'grape' => 'ぶどう',
];
echo "連想配列の例:\n";
displayLastArrayKey($fruits); // 出力: 配列の最後のキーは: 'grape'

echo "------------------------\n";

// 2. 数値添字配列の場合 (キーは整数)
$colors = ['Red', 'Green', 'Blue'];
echo "数値添字配列の例:\n";
displayLastArrayKey($colors); // 出力: 配列の最後のキーは: 2

echo "------------------------\n";

// 3. 空の配列の場合
$emptyArray = [];
echo "空の配列の例:\n";
displayLastArrayKey($emptyArray); // 出力: 対象の配列は空です。

PHPのarray_key_last()関数は、指定された配列の最後のキーを取得するために使用します。この関数は、キーを取得したい配列を引数として1つ受け取ります。

関数が返す値は、引数に渡された配列の状態によって変わります。配列に要素が1つ以上存在する場合、その配列の最後のキーを返します。サンプルコードにあるように、キーが文字列の連想配列(例: $fruits)では最後のキーである文字列 'grape' が返され、キーが整数の数値添字配列(例: $colors)では最後のキーである整数 2 が返されます。

一方、引数に空の配列を渡した場合、この関数はエラーを発生させるのではなく null を返します。そのため、サンプルコードのように戻り値が null かどうかを判定することで、配列が空である場合の処理を安全に記述できます。

このようにarray_key_last()関数は、配列の末尾にある要素のキーを、配列の種類(連想配列か数値添字配列か)を問わず、シンプルかつ効率的に取得するための便利な関数です。

array_key_last()関数は配列の最後のキーを取得する便利な関数です。注意点として、引数に空の配列を渡すと戻り値がnullになります。取得したキーを配列の添字として使う前に、サンプルコードのように=== nullを用いて厳密な比較でnullでないことを必ず確認してください。このチェックを怠るとエラーの原因となります。また、この関数は配列の内部ポインタを移動させないため、ループ処理の中で使っても安全です。戻り値の型は、数値添字配列なら整数、連想配列なら文字列になる点も覚えておきましょう。

【PHP8.x】array_key_last関数の使い方 | いっしー@Webエンジニア