$_GET['values']
変数に代入するための近道はありますか?
私は現在、他の人と同じようにしています:
if(isset($_GET['type'],$_GET['case'])
$type = $_GET['type'];
$case = $_GET['case'];
以下のように個別に行うのではなく、これを行うためのよりクリーンな方法はありますか。
$type = $_GET['type'];
$case = $_GET['case'];
$_GET['values']
変数に代入するための近道はありますか?
私は現在、他の人と同じようにしています:
if(isset($_GET['type'],$_GET['case'])
$type = $_GET['type'];
$case = $_GET['case'];
以下のように個別に行うのではなく、これを行うためのよりクリーンな方法はありますか。
$type = $_GET['type'];
$case = $_GET['case'];
さて、配列マップを使用すると、case
を一度だけでなく一度にすべて取得でき、 と を同時にチェックすることもできisset()
ますempty()
。
次の URL があるとします。read.php?id=1&name=foo&job=student&country=Brazil
あなたの問題は型を取得することです.それが正しいかどう$_GET
かを確認する必要があるかもしれません.empty/isset
まず、反復する関数を作成します。
function checkGet($val){
return (isset($val) && !empty($val)) ? $val : null;
}
次に、その関数をコールバックしますarray_map()
$check = array_map('checkGet', $_GET);
それだけです!
今実行var_dump($check);
すると、すべての型と値を取得できます。
array (size=4)
'id' => string '1' (length=1)
'name' => string 'foo' (length=3)
'job' => string 'student' (length=7)
'country' => string 'Brazil' (length=6)
つまり、この後、次のことを行う代わりに:
if(isset($_GET['something']) && !empty($_GET['something']))
$var = $_GET['something'];
echo $var;
ただ行う:
echo $check['something']
必要なチェックを確実に行うために、私が考えることができる唯一の1行のコードは次のとおりです。
$type = (isset($_GET['type'])) ? $_GET['type'] : 'a default value or false';
コメントを読んで、あなたがこれをしたいかもしれないことを理解しています:
foreach($_GET as $key=>$value) {
$$key = $value;
}
ただし、必要な変数のみを常に初期化することをお勧めします。上記のコードは不明な変数を取得することになり、実際にはユーザーがスクリプトを操作する方法を提供する可能性があります。
例:
index.php?ExpectedVar=1&UserDefinedVar=2
コードで次の変数を生成します。
$ExpectedVar // 1 <- you wanted this one
$UserDefinedVar // 2 <- but what about this?
このスクリプトを別のスクリプトから呼び出すとどうなるでしょうか?
次に、このコードがファイルの先頭にある場合でも、ユーザー定義の $_GET! からいくつかの変数が上書きされる可能性があります。
災害時シナリオ:
script1.php
<?php
$tableToDelete = "old_products";
include("script2.php");
?>
script2.php
<?php
foreach($_GET as $key=>$value) {
$$key = $value;
}
// user added &tableToDelete=users
// DROP TABLE $table
// will gloriously delete users
?>
代わりに、私が投稿した元のコードを数行書くだけで、php スクリプトの開始時に必要な変数を取得し、明確な心でそれらを使用できます。
機能を求めていると思いますextract
。
extract($_GET); //now, all of the functions are in current symbol table
あなたはそれを行うことができますextract()
extract($_GET, EXTR_PREFIX_ALL, 'g');
となることによって
$_GET['val']
になる$g_val
3 番目のパラメーターg
に注意してください。これはキーの前に追加g_
されます。
このようにして、TRUEまたはFALSEのみが返されるようにします
if (!isset($_GET['type']) || empty($_GET['type'])) {
// Display error
} else {
$type = $_GET['type'];
$case = $_GET['case'];
}
または、そのようにすることもできます
$type = (isset($_GET['type'])===false)?'':trim($_GET['type']);
$case = (isset($_GET['case'])===false)?'':trim($_GET['case']);
$_GET はテーブルなので、 foreach 関数を簡単に使用できます
例えば
foreach ($_GET as $key => $value) {
... = $value;
}
$key 名で変数を作成したい場合は、変数変数を使用してください PHP Manual 変数 変数