提供给foreach的参数无效!

问题描述:

可能重复:
Invalid argument supplied for foreach()提供给foreach的参数无效!

我有以下代码:

<? 
foreach($format as $form) 
{ 
    echo $form; 
    ?> 
    <ul> 
     <? 
     $s = $database->onlineFormatUsers($form); 
     while($row=mysql_fetch_assoc($s)) 
     { 
      $username=$row['username']; 
      $id=$row['id'];?> 
      <li><a href="../userprofile.php?id=<?echo $id?>"><?echo "$username";?></a></li> 
     <? 
     } 
     ?> 
    </ul> 
    <? 
} 
?> 

<? 
//the active formats 
$f = $database->activeFormats(); 
while($row=mysql_fetch_assoc($f)) 
{ 
    $format=$row['name']; 
} 
?> 

跟它其无效参数? 任何原因为什么? 谢谢

+0

请显示'$ format'的来源。 – Unicron 2010-07-05 16:21:02

+2

在foreach循环之前,你可以给我们一个'print_r'或'var_dump' of'$ format'吗? – Charles 2010-07-05 16:21:28

+0

$格式似乎在foreach之后而不是之前被填充。将数据库输出的处理移至foreach之前。您应该仍然使用数组的检查,以防数据库返回任何内容。 – 2010-07-05 16:33:26

$format可能不是一个数组。

foreach块包装在if(is_array($format)) { }块中或通过执行$format = (array)$format将其转换为数组。

+0

哦格式需要是一个数组? 我将编辑以显示$格式的来源。 – sark9012 2010-07-05 16:21:36

+0

是的,'foreach'只适用于数组。 – ceejayoz 2010-07-05 16:22:05

+0

而不是$ format =(array)$ format;你可以立即做foreach((array)$格式为$ form) – 2010-07-05 16:24:08

你确定$ format是一个数组吗? foreach循环

$格式前加上一个

<?php echo gettype($format); ?> 

不是数组或不存在! Before foreach

if(is_array($format)){ 
    foreach($format ... 
}