2012-11-28 169 views
0

我嘗試寫一個代碼,其中可以通過使用foreach語句如何通過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][]!=""){ 

我需要打印的會話數組的內容,這是我知道如何 是有辦法解決這個問題的唯一途徑?

感謝

=========編輯

感謝您的答案,大家好我終於得到它

回答

0

這應該工作:

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

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

空括號僅僅是簡單的語法糖在數組末尾附加了

此外,即使它在這裏沒有問題,請注意正確引用'temp'並且不要使用temp。如果沒有temp常數定義,將採取相應的字符串值'temp',但是如果這樣的常數,因爲這define('temp', 'value')別處所定義,使用temp將使用定義的值來代替。

+0

嘗試此代碼,這個錯誤出現 警告:提供的foreach() – itsover9000

+0

以及你需要確保參數無效$ _SESSION ['temp']是一個數組,就像使用不同的測試,例如:'if(is_array($ _ SESSION ['temp'])){...} – SirDarius

0

這會給你添加到會話temp數組的每個帖子字段。您在foreach之前不需要if。您可能要檢查它的設置雖然循環之前:

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

縱觀你的代碼與$array[keyname]訪問數組元素這是不好的,你應該使用周圍的鍵名報價。原因是,如果沒有引號,PHP會將其視爲一個常量,如果沒有找到,則會返回到一個字符串。所以如果你有一個同名的常量,你會遇到問題。

0

空括號[]用於東西添加到陣列。要使用整個數組,請省略空括號。

0
foreach($_SESSION["temp"] as $temp) 
{ 
echo $temp; 
} 
0

我只假設你正在調試。要打印陣列可以使用功能print_r($array);

爲了調試,我通常使用var_dump($var);,因爲它也顯示了類似的數據類型和一些等其他詳細信息。

如果你想使用foreach循環以任何理由,這是非常容易的:

foreach($_SESSION as $value) echo $value;