関数の概要
PHPの compact 関数は、変数名を文字列で指定すると、それらの変数とその値を連想配列としてまとめることができる関数です。主に複数の変数を一度に配列化したい場合に便利です。特にテンプレートへのデータ渡しや、関数への引数整理に役立ちます。
パラメータの説明
varname1, varname2, ...: 文字列として変数名を指定します。複数の変数名をカンマで並べて渡すことが可能です。配列でも渡せます。
戻り値
指定した変数名のキーと、その変数の値を持つ連想配列を返します。もし指定した変数が存在しない場合、そのキーは結果に含まれません。
使用例
基本的な使い方
<?php
$name = "山田太郎";
$age = 30;
$result = compact('name', 'age');
print_r($result);
?>
この例では、$name と $age が連想配列にまとめられ、以下のように出力されます。
Array
(
[name] => 山田太郎
日付未入力 => 30
)
配列で複数の変数名を渡す場合
<?php
$title = "PHP入門";
$author = "佐藤花子";
$year = 2024;
$vars = ['title', 'author', 'year'];
$data = compact($vars);
print_r($data);
?>
配列に変数名をまとめて渡すことで、一気に複数変数を連想配列に変換できます。
存在しない変数名を指定した場合
<?php
$city = "東京";
$result = compact('city', 'country');
print_r($result);
?>
この場合、country という変数は存在しないため、結果の配列には含まれず city だけの配列が生成されます。
関連する関数
extract()– 連想配列から変数を作成する関数array_merge()– 複数の配列を結合する関数get_defined_vars()– 現在定義されているすべての変数を配列で取得する関数
まとめ
compact 関数は、変数名を指定するだけで簡単に連想配列を作成できる便利なツールです。テンプレートへのデータ渡しや、関数の引数管理においてコードをスッキリさせる効果があります。特に複数の変数を一括で配列にまとめたい場合は積極的に活用しましょう。
