PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのftell()関数とは?ファイルポインタの現在位置を取得する方法

ftell()関数は、fopen()で開いたファイル内における現在の読み書き位置(ファイルポインタの位置)を取得するための関数です。正常に処理できた場合は現在のポインタ位置を整数で返し、失敗した場合はFALSEを返します。

基本構文

ftell(file_pointer)

パラメータ

  • file_pointerfopen()を使って作成したファイルポインタを指定します。必須の引数です。

戻り値

現在のファイルポインタの位置(先頭からのバイト数)を整数で返します。エラーが発生した場合はFALSEを返します。

使用例1:ファイルを開いた直後の位置を確認する

ファイルを読み込みモードで開いた直後は、ポインタは必ず先頭(0バイト目)にあります。以下の例で確認してみましょう。

<?php
    $file_pointer = fopen("new.txt", "r");
    echo ftell($file_pointer);
    fclose($file_pointer);
?>

出力結果

0

このように、新しく開いたファイルではポインタ位置が「0」と表示されます。

使用例2:fseek()で位置を移動してから確認する

次に、fseek()を使ってポインタ位置を変更した後に、ftell()でその位置を取得する例を見てみましょう。

<?php
    $file_pointer = fopen("new.txt", "r");

    // ポインタ位置を10バイト目へ移動
    fseek($file_pointer, 10);

    // 現在のポインタ位置を表示
    echo ftell($file_pointer);

    fclose($file_pointer);
?>

出力結果

10

fseek()で10バイト目に移動したため、ftell()は現在の位置である「10」を返しています。

まとめ

ftell()は、ファイル操作の進行状況を把握したり、fseek()と組み合わせて特定の位置からデータを読み書きしたりする際に便利な関数です。なお、fseek()の第2引数には数値(オフセット)を指定するのが正しい使い方なので、実装時には文字列ではなく整数を渡すようにしましょう。

  1. PHPのlog()関数とは?自然対数の計算方法と使い方を解説

    定義と使い方log() 関数は、数値の自然対数(natural logarithm)を計算します。対数とは、指数関数の逆演算のことです。たとえば 102=100 という関係は「log10100=2」と表せます。自然対数はオイラー数 e を底として計算され、PHP では定義済み定数 M_E によって e の値(2.7182818284590452354)が提供されています。具体例を挙げると、exp(4.60517018599)=100(つまり e4.60517018599=100)が成り立つため、loge100=4.60517018599 となります。PHP では、この自然対数(loge)を l

  2. PHPのcurrent()関数とは?配列の現在の要素を取得する方法を解説

    PHPのcurrent()関数は、配列内の「現在の要素(カレント要素)」の値を返す関数です。すべてのPHP配列は内部的にポインタ(内部配列ポインタ)を持っており、このポインタが現在指している要素をcurrent()で取得できます。基本構文current(arr)パラメータarr − 対象となる配列を指定します。必須の引数です。戻り値current()関数は、配列内の現在の要素の値を返します。なお、内部ポインタが配列の範囲外にある場合や空の配列の場合にはfalseを返します。ポイント:内部ポインタは移動しないcurrent()はあくまで現在位置の値を取得するだけで、内部ポインタは移動しません。ポ