$ _POSTが存在するかどうかを確認しようとしていますが、存在する場合は別の文字列内に出力し、存在しない場合はまったく出力しません。
このようなもの:
$fromPerson = '+from%3A'.$_POST['fromPerson'];
function fromPerson() {
if !($_POST['fromPerson']) {
print ''
} else {
print $fromPerson
};
}
$newString = fromPerson();
どんな助けも素晴らしいでしょう!
if( isset($_POST['fromPerson']) )
{
$fromPerson = '+from%3A'.$_POST['fromPerson'];
echo $fromPerson;
}
//Note: This resolves as true even if all $_POST values are empty strings
if (!empty($_POST))
{
// handle post data
$fromPerson = '+from%3A'.$_POST['fromPerson'];
echo $fromPerson;
}
if (isset($_POST['fromPerson']) )
{
$fromPerson = '+from%3A'.$_POST['fromPerson'];
echo $fromPerson;
}
誰もがisset()を使用するように言っています-これはおそらくあなたのために働くでしょう。
ただし、次の違いを理解することが重要です
$_POST['x'] = NULL;
および$_POST['x'] = '';
isset($_POST['x'])
は、最初の例ではfalse
を返しますが、2番目の例ではtrue
を返しますが、どちらかを印刷しようとしても、両方とも空の値を返します。
$_POST
がユーザーが入力したフィールド/フォームから来ており、空白のままになっている場合、値は ""でなくNULLではないことを確信します(ただし、これについては100%確信していません)。
その仮定が間違っていても(私が間違っているなら誰かが私を修正してください!)、上記は将来の使用のためにまだ知っておくと良いです。
言及されていないことに驚いた
if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['fromPerson'])){
isset($_POST['fromPerson'])
配列キーが存在するかどうかを確認する適切な方法は、関数array_key_exists()
です。
違いは、$_POST['variable'] = null
がある場合、キーは存在し、送信されたが値がnullだったことを意味することです。
他のオプションはisset()
で、配列キーが存在するかどうか、および設定されているかどうかを確認します
最後のオプションはempty()
を使用することです。これは、配列キーが設定されていて、値が空と見なされない場合に存在するかどうかを確認します。
例:
$arr = [
'a' => null,
'b' => '',
'c' => 1
];
array_key_exists('a', $arr); // true
isset($arr['a']); // false
empty($arr['a']); // true
array_key_exists('b', $arr); // true
isset($arr['b']); // true
empty($arr['b']); // true
array_key_exists('c', $arr); // true
isset($arr['c']); // true
empty($arr['c']); // false
あなたの質問について
値が送信されたかどうかを確認する適切な方法は、array_key_exists()を要求メソッドのチェックとともに使用することです
if ($_SERVER['REQUEST_METHOD'] == 'POST' && array_key_exists('fromPerson', $_POST)
{
// logic
}
ただし、ロジックによってはisset()
とempty()
が適切な場合もあります。
isset
の使用は適切ではありません。PHPドキュメントによると: http://php.net/manual/en/function.array-key-exists.php
(例#2を参照 array_key_exists()vs isset())
メソッドarray_key_exists
は、配列内のキーの存在を確認するためのものです。
したがって、質問のコードは次のように変更できます。
function fromPerson() {
if (array_key_exists('fromPerson', $_POST) == FALSE) {
return '';
} else {
return '+from%3A'.$_POST['fromPerson'];
};
}
$newString = fromPerson();
すべてのメソッドは実際には推奨されていません。Netbeans7.4では警告であり、スーパーグローバル変数に直接アクセスしないことをお勧めします。filter代わりに
$fromPerson = filter_input(INPUT_POST, 'fromPerson', FILTER_DEFAULT);
if($fromPerson === NULL) { /*$fromPerson is not present*/ }
else{ /*present*/ }
var_dump($fromPerson);exit(0);
試して
if (isset($_POST['fromPerson']) && $_POST['fromPerson'] != "") {
echo "Cool";
}
isset
($_POST['fromPerson'])
?
if (is_array($_POST) && array_key_exists('fromPerson', $_POST)) {
echo 'blah' . $_POST['fromPerson'];
}
if( isset($_POST['fromPerson']) )
が正しい。
関数を使用して、エコーを向けるよりも良い結果を返すことができます。
私はそれが設定されているかどうか、そして三項演算子で空かどうかをチェックしたいです。
// POST variable check
$userID = (isset( $_POST['userID'] ) && !empty( $_POST['userID'] )) ? $_POST['userID'] : null;
$line = (isset( $_POST['line'] ) && !empty( $_POST['line'] )) ? $_POST['line'] : null;
$message = (isset( $_POST['message'] ) && !empty( $_POST['message'] )) ? $_POST['message'] : null;
$source = (isset( $_POST['source'] ) && !empty( $_POST['source'] )) ? $_POST['source'] : null;
$version = (isset( $_POST['version'] ) && !empty( $_POST['version'] )) ? $_POST['version'] : null;
$release = (isset( $_POST['release'] ) && !empty( $_POST['release'] )) ? $_POST['release'] : null;