extract()

PHPのextract()関数は、配列を複数の変数に展開する組み込み関数。配列要素のキーを変数名に、配列要素の値を変数の値とする。

定義

整数型 extract( 配列型 &$var_array[, 整数型 $extract_type[, 文字列型 $prefix]] );

パラメータ

配列型 &$var_array

複数の変数に展開したい配列を指定。

整数型 $extract_type

  • EXTR_OVERWRITE: 既に同名の変数が存在する場合、上書きする。
  • EXTR_SKIP: 既に同名の変数が存在する場合、上書きしない。
  • EXTR_PREFIX_SAME: 既に同名の変数が存在する場合、変数名に接頭辞「文字列型 $prefix」を付け展開する。
  • EXTR_PREFIX_ALL: 全ての変数名に、接頭辞「文字列型 $prefix」を付ける。
  • EXTR_PREFIX_INVALID: 数値キーなど、変数名として無効な場合、変数名に接頭辞「文字列型 $prefix」を付ける。
  • EXTR_IF_EXISTS: 既に同名の変数が存在する場合のみ、上書きで展開する。同名の変数が存在しない場合は、展開しない。
  • EXTR_PREFIX_IF_EXISTS: 既に同名の変数が存在する場合のみ、変数名に接頭辞「文字列型 $prefix」を付け展開する。同名の変数が存在しない場合は、展開しない。
  • EXTR_REFS: 参照渡しで、展開する。
文字列型 $prefix

変数名に付ける接頭辞。

戻り値

整数。

配列から変数に展開した数。

構文

配列を複数の変数に展開

整数 = extract( 配列 );

「配列」を複数の変数に展開し、展開した数を返す。配列要素のキーを変数名に、配列要素の値を変数の値とする。

配列を複数の変数に展開(EXTR_OVERWRITE)

整数 = extract( 配列, EXTR_OVERWRITE );

「配列」を複数の変数に展開し、展開した数を返す。配列要素のキーを変数名に、配列要素の値を変数の値とする。

既に同名の変数が存在する場合、上書きする。

配列を複数の変数に展開(EXTR_SKIP)

整数 = extract( 配列, EXTR_SKIP );

「配列」を複数の変数に展開し、展開した数を返す。配列要素のキーを変数名に、配列要素の値を変数の値とする。

既に同名の変数が存在する場合、上書きしない。

配列を複数の変数に展開(EXTR_PREFIX_SAME, 接頭辞)

整数 = extract( 配列, EXTR_PREFIX_SAME );

「配列」を複数の変数に展開し、展開した数を返す。配列要素のキーを変数名に、配列要素の値を変数の値とする。

既に同名の変数が存在する場合、変数名に「接頭辞」を付け展開する。

配列を複数の変数に展開(EXTR_PREFIX_ALL)

整数 = extract( 配列, EXTR_PREFIX_ALL, 接頭辞 );

「配列」を複数の変数に展開し、展開した数を返す。配列要素のキーを変数名に、配列要素の値を変数の値とする。

全ての変数名に、「接頭辞」を付ける。

配列を複数の変数に展開(EXTR_PREFIX_INVALID)

整数 = extract( 配列, EXTR_PREFIX_INVALID, 接頭辞 );

「配列」を複数の変数に展開し、展開した数を返す。配列要素のキーを変数名に、配列要素の値を変数の値とする。

数値キーなど、変数名として無効な場合、変数名に「接頭辞」を付ける。

配列を複数の変数に展開(EXTR_IF_EXISTS)

整数 = extract( 配列, EXTR_IF_EXISTS );

既に同名の変数が存在する場合のみ、上書きで展開し、展開した数を返す。同名の変数が存在しない場合は、展開しない。

配列要素のキーを変数名に、配列要素の値を変数の値とする。

配列を複数の変数に展開(EXTR_PREFIX_IF_EXISTS)

整数 = extract( 配列, EXTR_PREFIX_IF_EXISTS, 接頭辞 );

既に同名の変数が存在する場合のみ、変数名に「接頭辞」を付け展開し、展開した数を返す。同名の変数が存在しない場合は、展開しない。

配列要素のキーを変数名に、配列要素の値を変数の値とする。

配列を複数の変数に展開(EXTR_REFS)

整数 = extract( 配列, EXTR_REFS );

「配列」を複数の変数に参照渡しで展開し、展開した数を返す。配列要素のキーを変数名に、配列要素の値を変数の値とする。

既に同名の変数が存在する場合、上書きする。

サンプル

連想配列を展開

<?php
$red = "レッド";
$varArray = array(
    "red" => "赤",
    "blue" => "青",
    "green" => "緑"
);
extract( $varArray );
echo '$red: ' . "{$red}<br />";
echo '$blue: ' . "{$blue}<br />";
echo '$green: ' . "{$green}<br />";
?>

↓↓↓出力結果↓↓↓

$red: 赤
$blue: 青
$green: 緑

連想配列を展開(EXTR_OVERWRITE)

<?php
$red = "レッド";
$varArray = array(
    "red" => "赤",
    "blue" => "青",
    "green" => "緑"
);
extract( $varArray, EXTR_OVERWRITE );
echo '$red: ' . "{$red}<br />";
echo '$blue: ' . "{$blue}<br />";
echo '$green: ' . "{$green}<br />";
?>

↓↓↓出力結果↓↓↓

$red: 赤
$blue: 青
$green: 緑

連想配列を展開(EXTR_SKIP)

<?php
$red = "レッド";
$varArray = array(
    "red" => "赤",
    "blue" => "青",
    "green" => "緑"
);
extract( $varArray, EXTR_SKIP );
echo '$red: ' . "{$red}<br />";
echo '$blue: ' . "{$blue}<br />";
echo '$green: ' . "{$green}<br />";
?>

↓↓↓出力結果↓↓↓

$red: レッド
$blue: 青
$green: 緑

連想配列を展開(EXTR_PREFIX_SAME)

<?php
$blue ="ブルー";
$varArray = array(
    "red" => "赤",
    "blue" => "青",
    "green" => "緑"
);
extract( $varArray, EXTR_PREFIX_SAME, "color" );
echo '$red: ' . "{$red}<br />";
echo '$color_red: ' . "{$color_red}<br />";
echo '$blue: ' . "{$blue}<br />";
echo '$color_blue: ' . "{$color_blue}<br />";
echo '$green: ' . "{$green}<br />";
echo '$color_green: ' . "{$color_green}<br />";
?>

↓↓↓出力結果↓↓↓

$red: 赤
$color_red:
$blue: ブルー
$color_blue: 青
$green: 緑
$color_green:

連想配列を展開(EXTR_PREFIX_ALL)

<?php
$blue ="ブルー";
$varArray = array(
    "red" => "赤",
    "blue" => "青",
    "green" => "緑"
);
extract( $varArray, EXTR_PREFIX_ALL, "color" );
echo '$red: ' . "{$red}<br />";
echo '$color_red: ' . "{$color_red}<br />";
echo '$blue: ' . "{$blue}<br />";
echo '$color_blue: ' . "{$color_blue}<br />";
echo '$green: ' . "{$green}<br />";
echo '$color_green: ' . "{$color_green}<br />";
?>

↓↓↓出力結果↓↓↓

$red:
$color_red: 赤
$blue: ブルー
$color_blue: 青
$green:
$color_green: 緑

配列を展開(EXTR_PREFIX_INVALID)

<?php
$varArray = array( "赤", "青", "緑" );
extract( $varArray, EXTR_PREFIX_INVALID, "color" );
echo '$color_0: ' . "{$color_0}<br />";
echo '$color_1: ' . "{$color_1}<br />";
echo '$color_2: ' . "{$color_2}<br />";
?>

↓↓↓出力結果↓↓↓

$color_0: 赤
$color_1: 青
$color_2: 緑

連想配列を展開(EXTR_IF_EXISTS)

<?php
$blue ="ブルー";
$varArray = array(
    "red" => "赤",
    "blue" => "青",
    "green" => "緑"
);
extract( $varArray, EXTR_IF_EXISTS );
echo '$red: ' . "{$red}<br />";
echo '$blue: ' . "{$blue}<br />";
echo '$green: ' . "{$green}<br />";
?>

↓↓↓出力結果↓↓↓

$red:
$blue: 青
$green:

連想配列を展開(EXTR_PREFIX_IF_EXISTS)

<?php
$blue ="ブルー";
$varArray = array(
    "red" => "赤",
    "blue" => "青",
    "green" => "緑"
);
extract( $varArray, EXTR_PREFIX_IF_EXISTS, "color" );
echo '$red: ' . "{$red}<br />";
echo '$color_red: ' . "{$color_red}<br />";
echo '$blue: ' . "{$blue}<br />";
echo '$color_blue: ' . "{$color_blue}<br />";
echo '$green: ' . "{$green}<br />";
echo '$color_green: ' . "{$color_green}<br />";
?>

↓↓↓出力結果↓↓↓

$red:
$color_red:
$blue: ブルー
$color_blue: 青
$green:
$color_green:

連想配列を展開(EXTR_REFS)

連想配列を展開し定義した変数を、再定義すると、連想配列の要素の値も変わることに注目。

<?php
$varArray = array(
    "red" => "赤",
    "blue" => "青",
    "green" => "緑"
);
extract( $varArray, EXTR_REFS );
echo '$red: ' . "{$red}<br />";
echo '$blue: ' . "{$blue}<br />";
echo '$green: ' . "{$green}<br />";
$blue = "ブルー";
print_r( $varArray );
?>

↓↓↓出力結果↓↓↓

$red: 赤
$blue: 青
$green: 緑
Array ( [red] => 赤 [blue] => ブルー [green] => 緑 )

スポンサード リンク

カテゴリー: PHP, キー, , 取得, 組み込み関数, 配列 タグ: パーマリンク