PHP:如何在echo语句中使用foreach循环?

时间:2011-06-01 07:19:04

标签: php

我想把一个循环用来回显一个回声中的数字; 我试着吼道:

     $array = array();
     $result = mysql_query("SHOW TABLES FROM `st_db_1`");
     while($row = mysql_fetch_row($result) ){
     $result_tb = mysql_query("SELECT id FROM $row[0] LIMIT 1");
     $row_tb=mysql_fetch_array($result_tb);
     $array[] = $row[0];
     $array2[] = $row_tb[0];
     //checking for availbility of result_tb
     /*   if (!$result_tb) {
                  echo "DB Error, could not list tablesn";
                  echo 'MySQL Error: ' . mysql_error();
                  exit;
                  }  */
     }
     natsort($array);
     natsort($array2);

    foreach ($array as $item[0]  ) {
    echo "<a href=show_cls_db.php?id= foreach ($array2 as $item2[0]){echo \"$item2[0]\"}>{$item[0]}<br/><a/>" ;
    }

但是php没有考虑回声中的foreach循环; 请给我一些建议

4 个答案:

答案 0 :(得分:4)

正如其他人所说,你不能在字符串中做循环。你想要做的就是这样:

foreach ($array as $element) {
    echo "<a href='show_cls_db.php?id=" . implode('', $array2) . "'>{$element}</a><br/>";
}

implode(...)使用分隔符连接数组的所有值,也可以是空字符串。

注意:

  1. 我认为您希望在<br />
  2. 之外<a>...</a>
  3. 我不明白你为什么要使用$item[0]作为遍历数组元素的临时存储(因此重命名为$element

答案 1 :(得分:2)

只需使用implode而不是尝试循环数组,

foreach ($array as $item)
{
    echo implode("",$array2);
}

另外,如果你需要为每个变量做其他逻辑,那么你可以这样做:

foreach ($array as $item)
{
    echo '<a href="show_details.php?';
    foreach($something as $something_else)
    {
        echo $something_else;
    }

    echo '">Value</a>';
}

我们必须看到变量的内容才能理解你想要做什么。


作为一个疯狂的猜测,我认为你的数组看起来像:

array(
     id => value
)

当您尝试在初始[0]生成的值中访问foreach时,您可能会尝试将密钥和值分开,尝试这样的事情:

foreach($array as $id => $value)
{
     echo $id;    //This should be the index
     echo $value; //This should be the value
}

答案 2 :(得分:0)

foreach ($array as $item  ) {
    echo "<a href=\"show_cls_db.php?id=";
    foreach ($array2 as $item2) { echo $item2[0]; }
    echo "\">{$item[0]}<br/><a/>" ;
}

答案 3 :(得分:0)

没有冒犯,但这段代码......粗糙。将它发布在codereview.stackexchange.com上,以获得一些帮助重新分解它的帮助。现在的一个快速提示是使用PDO,至少可以逃避输入。

无论如何,正如答案所指出的那样,你只需回显一个带有“foreach”代码的字符串。把它拿出来。我可能会像RobertPitt建议的那样使用implode。考虑通过让mysql进行排序,更有效地对数据库中的数据进行排序和选择。不要使用as $item[0],因为这完全没有意义。清楚地命名变量。此外,您的href标记格式错误 - 即使您将foreach循环拉出回声,也可能看不到正确的结果,因为您的浏览器可能会将其全部渲染掉。确保将这些引号放在应有的位置。