ホームページ  >  記事  >  バックエンド開発  >  PHPテーブルを二次元配列に変換する方法

PHPテーブルを二次元配列に変換する方法

PHPz
PHPzオリジナル
2023-04-20 09:08:01642ブラウズ

PHP では、テーブルは一般的なデータ形式の 1 つであり、通常はテーブル内のデータをフィルタリングや並べ替えなどで処理する必要があります。配列は PHP で最も柔軟で効率的なデータ構造の 1 つであるため、この時点でテーブルを 2 次元配列に変換することは良い選択です。

それでは、PHP でテーブルを 2 次元配列に変換するにはどうすればよいでしょうか?以下で詳しく紹介していきましょう。

  1. PHP 組み込み関数 fgetcsv() を使用して、CSV 形式のテーブルを解析します。

CSV (カンマ区切り値) 形式のテーブルは、各行を次のように区切ります。カンマ。改行文字で終わります。 PHP の組み込み関数 fgetcsv() を使用して、CSV テーブル内のデータの各行を読み取り、配列形式に変換できます。以下は簡単なサンプル コードです:

$handle = fopen("data.csv", "r");
$data = [];
while (($row = fgetcsv($handle)) !== false) {
    $data[] = $row;
}
fclose($handle);

上記のコードでは、最初にデータ ソース ファイルが fopen() 関数を通じて開かれ、次にデータ ソース ファイル内のテーブル データが 1 行ずつ読み取られます。 while ループ。各行は fgetcsv() 関数を使用して解析され、解析されたデータは配列の形式で $data 配列に格納されます。最後にデータ ソース ファイルを閉じます。

  1. PHPExcel ライブラリを使用して Excel 形式のテーブルを解析する

Excel 形式でテーブルを処理する必要がある場合は、PHPExcel ライブラリを使用してテーブルを 2 つの形式に変換できます。次元配列。 PHPExcel ライブラリは、Excel、CSV などのさまざまなスプレッドシート形式を操作できる PHP オープン ソース クラス ライブラリです。

以下は簡単なサンプル コードです:

require_once 'PHPExcel/IOFactory.php';
$excel = PHPExcel_IOFactory::load("data.xlsx");
$data = array();
$sheet = $excel->getActiveSheet();
foreach ($sheet->getRowIterator() as $rowKey => $row) {
    $cellIterator = $row->getCellIterator();
    $cellIterator->setIterateOnlyExistingCells(false);
    $temp = array();
    foreach ($cellIterator as $cellKey => $cell) {
        $temp[] = $cell->getValue();
    }
    $data[] = $temp;
}

上記のコードでは、まず PHPExcel ライブラリを導入し、Excel データ ソース ファイルを読み込み、getRowIterator()## を使用します。 # 関数を使用して各行のデータを取得し、getCellIterator() 関数を使用して各行の各セルのデータを取得します。最後に、データの各行は、後続のデータ処理と操作のために 2 次元配列に保存されます。

    データ形式変換関数
上記の 2 つの方法に加えて、カスタム データ変換関数を使用してテーブルから 2 次元配列への変換を完了することもできます。この方法は、テーブルの形式に応じて処理が異なるため、比較的煩雑ではありますが、データ形式の変換処理を柔軟に制御することができます。以下は簡単なサンプル コードです。

function table2array($table, $headerIndex = 0, $skipEmptyRow = true, $intval = true)
{
    $rows = explode("\n", $table);
    $header = array();
    $data = array();
    foreach ($rows as $key => $row) {
        if ($skipEmptyRow && trim($row) == '') {
            continue;
        }
        if ($headerIndex == $key) {
            $header = explode("\t", $row);
            continue;
        }
        $cols = explode("\t", $row);
        $rowData = array();
        foreach ($cols as $col) {
            if ($intval && is_numeric($col)) {
                $rowData[] = intval($col);
            } else {
                $rowData[] = $col;
            }
        }
        $data[] = array_combine($header, $rowData);
    }
    return $data;
}
上記のコードでは、カスタム関数を通じてテーブル データを 2 次元配列に変換します。関数パラメータには次のものが含まれます:

    $table: テーブル データ、形式は文字列です。
  • $headerIndex: ヘッダーが配置されている行のインデックス。デフォルトは 0 です。
  • $skipEmptyRow: 空行を無視するかどうか。デフォルトは true です。
  • $intval: 数値を整数に変換するかどうか。デフォルトは true です。
関数内では、まず

explode() 関数を使用して、指定された区切り文字に従って文字列を配列形式に分割し、次にデータ型を変換してアセンブルします。最後に、データの各行が連想配列の形式で $data 配列に格納され、この 2 次元配列が返されます。

概要

この記事では、テーブルを 2 次元配列に変換する 3 つの一般的な方法を紹介します。このうち、CSV 形式には fgetcsv() 関数が、Excel 形式には PHPExcel ライブラリが、その他の形式のテーブルにはカスタム データ変換関数が適しています。実際の開発においては、必要に応じて自社のシナリオに適した手法を柔軟に選択することができます。

以上がPHPテーブルを二次元配列に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。