質問

$items = (isset($_POST['items'])) ? $_POST['items'] : array();

う必要はありませんのスニペットのこのコード"? $_POST['items'] : array();"

うな組み合わせコードいいね!

私は使い込むようになっていて、そのようバンチの値からhtmlテキストボックス、店舗でのセッション配列になります。しかし、問題はいうに訂正の上、再度データをテキストボックスに新しい配列セッションで上書きのセッション配列が完全にスペース。

いる方法について、書かれてい箇所に配列している。ユーザの場合の判断だけるテキストボックスに入力したいと思っている前回のセッション配列のデータが上書きされるスペース(空白文字することができます。

私の考え方上記のコードに問題があったらいいただけます。啓蒙ってください。

役に立ちましたか?

解決

である三オペレータする

表現(expr1) ? (expr2) : (expr3)expr2expr1する評価された場合、およびTRUEexpr3expr1と評価された場合FALSEと評価します。

他のヒント

最後の部分は、の条件演算子として知られている。基本的には凝縮if/else文です。

これは次のように動作します:

$items =
    // if this expression is true
    (isset($_POST['items'])) 
    // then "$_POST['items']" is assigned to $items
    ? $_POST['items'] 
    // else "array()" is assigned
    : array();

ここでも単純であり得るいくつかの擬似コードは次のとおりです。

$items = (condition) ? value_if_condition_true : value_if_condition_false;
<時間>

編集をここでは簡単、知識をひけらかすサイドノートです:PHPのドキュメントには、の三項演算子のこの演算子を呼び出します。ながら、条件演算子は の三項演算子のを呼び出すこと(すなわち、3つのオペランドと演算子である)、それは誤った名称(むしろ推定)であり、技術的に三項演算子です。

三項演算子を理解するためのパオロの答えを見てます。

あなたはセッション変数を使用する場合がありますやって見ている何をすべきか。

(あなたは、セッションをページに出力しない何かを始めることができる前からです。すなわち、NO ECHO計算書)

これを入れて、あなたのページの上部に

session_start();
ユーザーがフォームを送信する際に、

次に、このサーバー変数に結果を保存します。これは、ユーザーがフォームを送信した初めてである場合は、単にを通じて、直接、それ以外のサイクルを、それを保存し、空でない任意の値を追加します。これはあなたが探しているものであるかどうかを確認します:

HTMLのCODE(testform.html):

<html>
    <body>
    <form name="someForm" action="process.php" method="POST"> 
        <input name="items[]" type="text">
        <input name="items[]" type="text">
        <input name="items[]" type="text">
        <input type="submit">
    </form>
    </body>
</html>

処理コード(process.php):

<?php
session_start();

if(!$_SESSION['items']) {
    // If this is the first time the user submitted the form,
    // set what they put in to the master list which is $_SESSION['items'].
    $_SESSION['items'] = $_POST['items'];
}
else {
    // If the user has submitted items before...
    // Then we want to replace any fields they changed with the changed value
    // and leave the blank ones with what they previously gave us.
    foreach ($_POST['items'] as $key => $value) {
        if ($value != '') { // So long as the field is not blank
            $_SESSION['items'][$key] = $value;
        }
    }
}


// Displaying the array.
foreach ($_SESSION['items'] as $k => $v) {
    echo $v,'<br>';
}
?>

これは同じです

if (isset($_POST['items']){
    $items = $_POST['items'];
} else {
    $items = array();
}

基本的に$ _POST [「商品」]次に$アイテムが存在する場合には、そうでなければ空の配列に設定されます、それに設定されます。

項目キーはその後、$ _POSTは$ _POST [「アイテム」]他のヌル配列に設定してください。の値に等しくなるように$の項目を設定している場合は、

これは、本質的に言う三項演算子は

私はそれがまた?:は別のオペレータであることは注目に値します考え出し

$one = $two ?: $three;
$one = two() ?: three();
<のp>での略記ます:

$one = $two ? $two : $three;
$one = two() ? two() : three();

別に少ないタイピングから、実行時の利点がtwo()のような関数を使用している場合、機能だけ速記のフォームを使用して、一度評価されますが、おそらく二度長い形式を使用してしまう、ということです。

ああ---ではternaryオペレーター

シンプルで明確な説明を提供 こちらの, は、著者らなければならないと言うような答え: "は、はたしてそうなのだろうか。"

に大腸 分離 二つの値(または)最初の値が選択された場合の試験を表示します。の背後にコロンが選択された場合は、最初の答えはfalseです。

ternaryオペレーターにもほ作変数php7.x、無料の通知警告が表示されます。例えば"

$mod = isset($_REQUEST['mod']) ? $_REQUEST['mod'] : "";
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top