我想把一个循环用来回显一个回声中的数字; 我试着吼道:
$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循环; 请给我一些建议
答案 0 :(得分:4)
正如其他人所说,你不能在字符串中做循环。你想要做的就是这样:
foreach ($array as $element) {
echo "<a href='show_cls_db.php?id=" . implode('', $array2) . "'>{$element}</a><br/>";
}
implode(...)
使用分隔符连接数组的所有值,也可以是空字符串。
注意:
<br />
<a>...</a>
$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循环拉出回声,也可能看不到正确的结果,因为您的浏览器可能会将其全部渲染掉。确保将这些引号放在应有的位置。