PHPの「end関数」についてご存じでしょうか?
配列操作ができる関数は複数あるため、他の関数との違いが分かっていない人もいることでしょう。
そこで今回は、
を分かりやすく解説します。
PHPを学習して間もない初心者や、配列操作ができるようになりたい人は、ぜひご覧ください。
目次
end関数の基本
end関数は、PHPで配列を操作したい場合に利用する関数です。まずは、end関数の機能・引数・戻り値について解説しますので、基本をしっかり押さえましょう。
end関数の機能
end関数は、配列の内部ポインタを最終要素まで移動させた後、最終要素に格納されている値を取得します。
内部ポインタとは、配列のどの要素を参照しようとしているかを示すカーソルのようなものです。配列を定義した際に、内部ポインタは最初の要素を指しています。
end関数などの配列操作を行う関数は、値の取得と同時に内部ポインタを操作します。そのため開発者は、内部ポインタが現在どの要素を指しているのかを常に意識することが重要です。
end関数の引数
end関数の引数は1つで、配列を渡します。
1 2 3 4 5 6 7 8 9 |
<?php // 配列を定義 $fruits = ['apple', 'banana', 'grape', 'orange']; // 配列を渡す $last_fruits = end($fluits); ?> |
整数型や文字列型など、配列以外の型を渡した場合、エラーになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $a = 1; $fruits_str = "orange"; $bool = true; $sample_array = null; // 配列以外の型を渡しているのでエラーになる echo end($a); echo end($fruits_str); echo end($bool); echo end($sample_array); ?> |
end関数の戻り値
end関数の戻り値は、引数で渡した配列の最終要素に格納されている値です。そのため、あらゆる型の値が返される場合があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php // Sampleクラス class Sample { public $name; function __construct(string $input_name) { $this->name = $input_name; } } $fruits = ['apple', 'banana', 'grape', 'orange']; $prime_number = [2, 3, 5, 7, 11]; $truth_table = [true, false]; $class_array = [new Sample('takashi'), new Sample('ayaka'), new Sample('kenji')]; // 戻り値がstring $fruits_last = end($fruits); // 戻り値がint $prime_number_last = end($prime_number); // 戻り値がbool $truth_table_last = end($truth_table); // 戻り値がSampleインスタンス $class_array_last = end($class_array); |
空の配列を引数とした場合は、falseが戻り値として返ってきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php // 空の配列を定義 $empty_array = []; // 戻り値はfalse $last_element = end($empty_array); // 「boolean」と表示される echo gettype($last_element)."<br />"; // falseのため「配列は空です」と表示される if($last_element){ echo "配列は空ではありません"; } else { echo "配列は空です"; } |
似た機能を持つ関数
end関数以外にも、PHPには配列操作が可能な関数が複数あります。機能を混同することがないように、各関数の機能をしっかり把握しましょう。
関数名 | 機能 |
array_key_last | 配列の最後のキーを取得します |
current | 現在内部ポインタが指している要素の値を取得します |
next | 内部ポインタを次の要素に移動させてから値を取得します |
prev | 内部ポインタを前の要素に移動させてから値を取得します |
reset | 内部ポインタを最初の要素に移動させてから値を取得します |
array_key_last関数
array_key_last関数は、配列の最後のキーを取得します。end関数と機能が似ているため、以下のサンプルコードを参考にして機能の違いを把握しましょう。
1 2 3 4 5 6 7 8 9 10 |
<?php // 連想配列の定義 $associative_array = ['key1'=>'value1', 'key2'=>'value2', 'key3'=>'value3']; // 「key3」と表示される echo array_key_last($associative_array)."<br />"; // 「value3」と表示される echo end($associative_array)."<br />"; |
array_key_last関数の特徴は、キーを取得する際に内部ポインタを移動させないことです。もし、内部ポインタを動かさずに最後の値を取得したいのであれば、以下のサンプルコードのように記述できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php // 配列を定義。内部ポインタは「apple」を指している $fruits_array = ['apple', 'banana', 'grape', 'orange']; // array_key_last関数を利用して最終要素の値を取得 $last_element = $fruits_array[array_key_last($fruits_array)]; // 「orange」と表示される echo $last_element."<br />"; // 内部ポインタは移動していないので「apple」と表示される echo current($fruits_array); |
current関数
current関数は、内部ポインタが現在指している要素の値を取得する関数です。関数呼び出し後に内部ポインタが移動することはありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php // 配列を定義。内部ポインタは「apple」を指している $fruits_array = ['apple', 'banana', 'grape', 'orange']; // 「apple」と表示される echo current($fruits_array)."<br />"; // 「orange」と表示される echo end($fruits_array)."<br />"; // 「orange」と表示される echo current($fruits_array)."<br />"; |
next関数
next関数は、内部ポインタを次の要素に1つ移動させた後に値を取得する機能を持ちます。内部ポインタが最終要素を指しているときにnext関数を呼び出した際には、falseが返却されます。
配列の範囲を超えて意図しない動作を引き起こさないためにも、next関数を呼び出す際には配列の範囲を超えることがないように意識しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php // 配列を定義。内部ポインタは「apple」を指している $fruits_array = ['apple', 'banana', 'grape', 'orange']; // 「banana」と表示される echo next($fruits_array)."<br />"; // 「orange」と表示される echo end($fruits_array)."<br />"; // 配列のサイズを超えるためfalseが返される if(!next($fruits_array)){ echo "次の要素は存在しません。<br />"; } |
prev関数
prev関数は、内部ポインタを前の要素に1つ移動させてから値を取得する機能を持ちます。内部ポインタが最初の要素を指しているときにprev関数を呼び出すと、falseが返却されます。
next関数と同様に、利用する際には配列の範囲を超えないように意識しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php // 配列を定義。内部ポインタは「apple」を指している $fruits_array = ['apple', 'banana', 'grape', 'orange']; // 配列の範囲から超えるためfalseが返される if(!prev($fruits_array)){ echo "前の要素は存在しません。<br />"; } // 「orange」と表示される echo end($fruits_array)."<br />"; // 「grape」と表示される echo prev($fruits_array)."<br />"; |
reset関数
reset関数は、内部ポインタを最初の要素に移動させてから値を取得する機能を持ちます。
1 2 3 4 5 6 7 8 9 10 |
<?php // 配列を定義。内部ポインタは「apple」を指している $fruits_array = ['apple', 'banana', 'grape', 'orange']; // 「orange」と表示される echo end($fruits_array)."<br />"; // 「apple」と表示される echo reset($fruits_array)."<br />"; |
まとめ
いかがでしたか?今回は、PHPのend関数の機能と他の配列操作関数との違いについて解説しました。
引数や戻り値だけでなく、他の関数との挙動の違いを把握することで、配列操作に対する理解はより一層深まります。
ぜひ、この記事をPHPの学習に役立ててください。