次のような配列があるとします:
$foo = array('first' => '1st',
'second' => '2nd',
'third' => '3rd');
配列からキーを選択して独自の変数にするにはどうすればよいですか?たとえば、配列$foo
は次のようになります。
$first = '1st';
$second = '2nd';
$third = '3rd';
これは、OOPを支援するMVCフレームワークを作成しているため、ユーザーに変数をViewロード関数に渡してもらい、配列を知らなくてもテンプレート内の変数を使用できるようにするためです。と呼ばれていました。
例えば:
$array = array('title' => 'My blog!' [...]);
$this->load->view('view.php', $array);
view.php:
echo $title;
出力:
私のブログ!
<?php extract($array); ?>
これを行うことができます:
foreach($foo as $k => $v) {
$$k = $v;
}
簡単な方法は、変数変数を使用することです:
foreach($foo as $key => $value) {
$$key = $value;
}
echo $first; // '1st'
ただし、これは一般的に推奨されないことに注意してください。テンプレート内で変数をスコープできるようにテンプレートシステムを変更することをお勧めします。そうしないと、衝突の問題が発生し、衝突の存在などをテストする必要があります。
これは、実際には 私の質問 に対する回答ですが、重複としてマークされているため、 アドバイスされました ここに回答を投稿します。 (メタで投稿する権限がありません。)
多くの列を持つデータベースにテーブルがある場合、各テーブルに変数を作成するのは面倒です。すばらしいことは、変数を自動的に作成できることです!
このメソッドは、変数名としてデータベーステーブルの列の見出し/タイトル/名前を使用し、変数の値として選択された行のコンテンツを使用します。
このアプローチは、テーブルからone行のみを選択する場合に適しています。コメント付きの私のコード:
$query = "SELECT * FROM mdlm WHERE mdlmnr = $id"; // Select only *one* row, the column mdlmnr is a unique key
$resultat = $conn->query($query); //Get the result (the connection is established earlier)
while ($col = $resultat->fetch_field()) { //fetch information about the columns
$kolonnetittel = $col->name; //Set the variable as the name of the column
echo $kolonnetittel . "<br>"; //Show all the column names/variables
}
$innhold = $resultat->fetch_assoc(); // get the content of the selected row as an array (not a multidimensional array!)
extract($innhold, EXTR_PREFIX_SAME, "wddx"); // Extract the array
私はプロではないので、コードは最良ではないかもしれませんが、それは私のために機能します:-)変数のリストが私のWebページに表示されたら、Excelにコピーし、連結を使用してphp/html/css-codeを作成しました:各変数に指定されたクラスを持つ段落。次に、このコードをWebページのコードにコピーし、すべての部分を移動しました。終了する前に、この行をコメントアウトしました。
//echo $kolonnetittel . "<br>";
便利なリンク:
この「チュートリアル」が他の誰かに役立つことを願っています!
PHP 7.1では、 list()と略記 を使用して、配列キーから新しい変数を作成できます。
$foo = array('first' => '1st',
'second' => '2nd',
'third' => '3rd');
list('first' => $first, 'second' => $second, 'third' => $third) = $foo;
// $first = '1st'
// or use shorthand
['first' => $first, 'second' => $second, 'third' => $third] = $foo;
これにより、配列から変数を引き出す際の制御が強化されます。たとえば、「最初」と「2番目」だけを引き出して、他をスキップできます。