extract 関数は、数値を複数の変数に分解して直接使用するために使用されます。 以下は W3C の説明です: PHP の extract() 関数は、配列から現在のシンボル テーブルに変数をインポートします。配列内の各要素について、キー名が変数名として使用され、キー値が変数値として使用されます。 2 番目のパラメーターの種類は、変数がすでに存在し、配列内に同じ名前の要素が存在する場合に、extract() 関数がそのような競合をどのように処理するかを指定するために使用されます。この関数は、正常に設定された変数の数を返します。
次の表はパラメータの説明です:
文法
extract(array,extract_rules,prefix)
パラメータの説明
配列が必要です。使用する入力を指定します。
extract_rules
オプション。 extract() 関数は、各キー名が正当な変数名であるかどうかをチェックし、シンボル テーブル内の変数名と競合するかどうかもチェックします。
不正なキー名、数値名、競合するキー名の処理は、このパラメータに基づいて決定されます。次のいずれかの値を指定できます:
可能な値:
EXTR_OVERWRITE - デフォルト。競合がある場合、既存の変数は上書きされます。
EXTR_SKIP - 競合がある場合、既存の変数は上書きされません。 (配列内の同じ名前の要素を無視します)
EXTR_PREFIX_SAME - 競合がある場合は、変数名の前にプレフィックスを付けます。 PHP 4.0.5 以降、これには数値インデックスの処理も含まれます。
EXTR_PREFIX_ALL - すべての変数名の前に接頭辞を付けます (3 番目のパラメーター)。
EXTR_PREFIX_INVALID - 不正な変数名または数値変数名のみをプレフィックスとして付けます。このタグはPHP 4.0.5で新たに追加されました。
EXTR_IF_EXISTS - 現在のシンボル テーブルに既に存在する場合、同じ名前の変数の値のみを上書きします。その他は加工しておりません。これは、一連の正当な変数が定義されており、$_REQUEST などの配列から値を抽出してこれらの変数を上書きする場合に使用できます。このタグはPHP 4.2.0で新たに追加されました。
EXTR_PREFIX_IF_EXISTS - 現在のシンボルテーブルに同名の変数が存在する場合のみ、プレフィックス付きの変数名が作成され、その他は処理されません。このタグはPHP 4.2.0で新たに追加されました。
EXTR_REFS - 変数を参照として抽出します。これは、インポートされた変数が依然として var_array パラメーターの値を参照していることを強く示しています。このフラグは単独で使用することも、extract_type で OR を使用して他のフラグと組み合わせて使用することもできます。このタグはPHP 4.3.0で新たに追加されました。
接頭語
オプション。プレフィックスは、extract_type の値が EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、EXTR_PREFIX_INVALID、または EXTR_PREFIX_IF_EXISTS の場合にのみ必要であることに注意してください。プレフィックスを付加した結果が正当な変数名ではない場合、シンボルテーブルにはインポートされません。
プレフィックスと配列キー名の間には自動的にアンダースコアが追加されます。
これは、データベースからデータ行を取得するときに非常に便利です。次の例を見てみましょう
コードをコピー
$db = mysql_connect('localhost','root','Ctrip07185419') または die('mysql に接続できません');
mysql_select_db('moviesite',$db) または die(mysql_error($db));
mysql_query('set names gbk',$db);
if(isset($_GET['アクション']) && $_GET['アクション'] == '編集')
{
$query = 'SELECT movie_name,movie_type,movie_year,movie_leadactor,movie_director FROM movie WHERE movie_id='.$_GET['id'];
//エコー $query;
$result = mysql_query($query, $db) または die(mysql_error($db));
extract(mysql_fetch_assoc($result));
}
その他
{
$movie_name='';
$movie_type=0;
$movie_year=date('Y');
$movie_leadactor=0;
$movie_director=0;
}
?>