0

foreachステートメントを使用して、セッション変数の内容を出力してループできるコードを記述しようとしています

ここに私のコードがあります

<form class="form form-inline" method = "post" action="reportmaker.php">
<select name="rfield">
<option value="">--Select Field--</option>
<?php
    $sc2=mysql_query("SELECT * from searchcolumn s left join report_fields r on s.scol_id=r.field_id where s.category != 'wh'");
    foreach($sc2 as $sc){
 ?>

<option value="<?php echo $sc[advsearch_col]; ?>"><?php echo $sc[advsearch_name]; ?></option>

 <?php
  }
 ?>
 </select>
 <button type="submit" value = "submit" id="add" name="add" class="btn pull-right">Add More</button>

</form>

<?php
        if(isset($_POST['add']))
            {
            $_SESSION['temp'][]=$_POST['rfield'];   

            }
        if($_SESSION[temp][]!=""){
            foreach($_SESSION[temp][] as $temp)
            {
        echo $temp;
            }
        }
        ?>

このコードで表示されるエラーは

致命的なエラー: 読み取りに [] を使用できません

エラーがある行はこれです

if($_SESSION[temp][]!=""){

セッション配列の内容を印刷する必要がありますが、これが私が知っている唯一の方法です。これを修正する方法はありますか?

ありがとう

=========編集

答えてくれてありがとう みんなやっと手に入れた

4

5 に答える 5

0

これはうまくいくはずです:

<?php
    if(isset($_POST['add']))
        {
        $_SESSION['temp'][]=$_POST['rfield'];   

        }
    if($_SESSION['temp']!=""){
        foreach($_SESSION['temp'] as $temp)
        {
    echo $temp;
        }
    }
    ?>

空の括弧は、配列の末尾に簡単に追加できるようにするための単なる構文糖衣です。

また、ここでは問題にならなかったとしても、適切に引用'temp'し、使用しないように注意してくださいtemp。定数が定義されていない場合はtemp、対応する文字列 value を取ります'temp'が、そのような定数が this などの他の場所で定義されている場合define('temp', 'value')、 usingtempは代わりに定義された値を使用します。

于 2012-11-28T10:41:05.440 に答える
0

これにより、セッションtemp配列に追加した各投稿フィールドが得られます。ifの前には必要ありませんforeach。ループする前に設定されているかどうかを確認することをお勧めします。

    if(isset($_SESSION['temp']))
    {
       foreach($_SESSION['temp'] as $temp)

コード全体で配列要素にアクセスするの$array[keyname]は良くありません。キー名を引用符で囲む必要があります。これは、引用符がない場合、PHP はそれを定数として扱い、見つからない場合は文字列にフォールバックするためです。したがって、同じ名前の定数があると、問題が発生します。

于 2012-11-28T10:41:28.720 に答える
0

空の括弧 [] は、配列に何かを追加するために使用されます。配列全体を使用するには、空の括弧を省略します。

于 2012-11-28T10:41:39.900 に答える
0
foreach($_SESSION["temp"] as $temp)
{
echo $temp;
}
于 2012-11-28T10:42:40.823 に答える
0

私はあなたがデバッグしていると仮定しているだけです。配列を出力するには、関数 を使用できますprint_r($array);

デバッグにはvar_dump($var);、データ型などの追加の詳細も表示されるため、通常使用します。

何らかの理由で foreach ループを使用する場合は、非常に簡単です。

foreach($_SESSION as $value) echo $value;
于 2012-11-28T10:44:51.057 に答える