Php 在循环中回显会话数组不起作用
我在回显会话数组时遇到了一个奇怪的问题。我希望做到以下几点:Php 在循环中回显会话数组不起作用,php,arrays,session,Php,Arrays,Session,我在回显会话数组时遇到了一个奇怪的问题。我希望做到以下几点: for($i=0;$i<sizeof($_SESSION['medication']);$i++){ echo $_SESSION['medication'][$i]; } 更新2 我发现了问题:在代码的后面部分,我使用了变量$medicing,它似乎引用了会话。怎么会?“全球注册”打开了吗 更新3-找到解决方案 register_globals确实是开着的(多么尴尬),我把它关掉了。它与另一个变量$medicing有
for($i=0;$i<sizeof($_SESSION['medication']);$i++){
echo $_SESSION['medication'][$i];
}
更新2
我发现了问题:在代码的后面部分,我使用了变量$medicing,它似乎引用了会话。怎么会?“全球注册”打开了吗
更新3-找到解决方案
register_globals确实是开着的(多么尴尬),我把它关掉了。它与另一个变量$medicing有关。现在它工作得很好。谢谢大家 该会话数组中有一个StdClass类型的对象无法回送
另外,使用为什么要尝试使用for在数组上循环
foreach
专门设计用于迭代数组
尝试:
正如其他人所建议的,您可能正在$\u会话['medicing']
中存储对象。您应该尝试var_dump($_SESSION['medicing')
若要查看其中实际存储的内容,如果其中确实有一个对象(stdClass
),您需要在运行循环之前删除它,因为您无法回显类
编辑:
$\u SESSION['medicing'][4]
之后的所有元素都包含一个对象作为值,您必须执行一些操作,而不是回显它(尝试像其他人建议的那样打印)我的猜测是,会话数组的索引中存储的不是字符串。在本例中,数组中似乎有一个stdClass
对象
此外,由于可以使用非数值数组索引,因此使用foreach循环将产生更好的结果
foreach($_SESSION['medication'] as $index => $value) {
if (is_scalar($value)) {
echo "$index = $value<br />";
} else {
echo "<pre>$index = " . print_r($value, true) . "</pre><br />";
}
}
foreach($\u会话['medicing']作为$index=>$value){
if(是_标量($value)){
echo“$index=$value
”;
}否则{
echo“$index=”.print_r($value,true)。“
”;
}
}
将检查变量是否可以回送(字符串、int、float、bool),否则我们将返回值。显示
var\u转储($\u会话['medicing'))
请。谢谢。试试var_转储($_会话['medicing'])代码>您在“药物”中存储了什么?它是一个数组吗?显示更多提示。@tunmisefasipe我正在会话数组中存储不同的药物。请参阅var_dump()的问题编辑,我通常也使用foreach,但它也有相同的问题。这非常有用,并向我展示了数组中的内容,非常感谢!!
foreach($_SESSION['medication'] as $foo){
echo $foo;
}
foreach($_SESSION['medication'] as $index => $value) {
if (is_scalar($value)) {
echo "$index = $value<br />";
} else {
echo "<pre>$index = " . print_r($value, true) . "</pre><br />";
}
}