2010-05-18 98 views
2

將數據從表單發送到第二個頁面時,會話的值始終以名稱「Array」保留期望的數字。PHP會話數組值始終顯示爲「數組」

數據應該顯示在一個表中,但是例如1,2,3,4我得到:Array,Array,Array。 (使用二維表格)

下面的代碼是從數組中第二頁上存儲的值「調用」的正確方法?

$test1 = $_SESSION["table"][0]; 
$test2 = $_SESSION["table"][1]; 
$test3 = $_SESSION["table"][2]; 
$test4 = $_SESSION["table"][3]; 
$test5 = $_SESSION["table"][4]; 

這究竟是什麼,我該如何解決這個問題? 這是否需要重寫?

最好的問候。

+2

您應該'print_r'那些看到那裏的東西。 – nc3b 2010-05-18 17:52:07

回答

7

你不需要任何種類的覆蓋。該腳本打印「陣列」,而不是價值,因爲你想打印到屏幕全陣列,而不是一個數值數組中,例如:

$some_array = array('0','1','2','3'); 

echo $some_array; //this will print out "Array" 

echo $some_array[0]; //this will print "0" 

print_r($some_array); //this will list all values within the array. Try it out! 

print_r()不是生產代碼有用,因爲它醜陋;但是,出於測試目的,它可以防止你將頭髮拉出嵌套陣列。

這是完全正常的索引來訪問元素的數組:$some_array[2]

,如果你想在一個表,你會做這樣的事情:

<table> 
    <tr> 
    for($i = 0 ; $i < count($some_array) ; $i++) { 
     echo '<td>'.$some_array[$i].'</td>'; 
    } 
    </tr> 
</table> 
+0

+1爲徹底的答案。 – 2010-05-18 18:03:56

+0

我得挑剔。 PHP具有嵌套數組,而不是真正的多維數組。 – Artefacto 2010-05-18 18:26:36

+0

夠公平,編輯。 – jordanstephens 2010-05-18 18:51:11

6

如前所述,嘗試

echo "<pre>"; 
print_r($_SESSION); 
echo "</pre>"; 

這應該告訴你什麼是會話陣列英寸

+0

print_r的輸出顯示了什麼?這可以幫助我們找到問題。 – 2010-05-18 17:57:48

+0

'print_r'不會放入您的頁面(正如jordanstephens在他的回答中所述)。這是爲了調試,所以我們可以看到數組的結構。 – Jonah 2010-05-18 18:30:21

0

二維表只是一個數組數組。

因此,通過拉出$_SESSION["table"][0],您將取出表示表格第一行的數組。

如果您想要該表中的特定值,則還需要傳遞第二個索引。即$_SESSION["table"][0][0]

或者你可能只是懶惰,並$table = $_SESSION["table"];在這一點$table將再次成爲你的正常表。

0

一個很好的方式...

<?php 
    foreach ($_SESSION as $key => $value) { 
     echo $key . " => " . $value . "<br>"; 
    } 
?>