2010-05-18 23 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>"; 
    } 
?>