问题描述
|
我试图循环回显一个回声中的一个数字;
而我尝试如下:
$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循环;
请给我一些建议
解决方法
正如其他人所提到的,您不能在字符串内进行循环。您正在尝试做的事情可以这样实现:
foreach ($array as $element) {
echo \"<a href=\'show_cls_db.php?id=\" . implode(\'\',$array2) . \"\'>{$element}</a><br/>\";
}
implode(...)
用一个分隔符连接数组的所有值,分隔符也可以是一个空字符串。
笔记:
我想你要<a>...</a>
之外<br />
我不明白为什么要使用ѭ5作为遍历器数组元素的临时存储(因此重命名为$element
)
, 只需使用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
)
当您尝试在初始foreach
产生的值内访问[0]
时,您可能正试图将键和值分开,请尝试如下操作:
foreach($array as $id => $value)
{
echo $id; //This should be the index
echo $value; //This should be the value
}
, foreach ($array as $item ) {
echo \"<a href=\\\"show_cls_db.php?id=\";
foreach ($array2 as $item2) { echo $item2[0]; }
echo \"\\\">{$item[0]}<br/><a/>\" ;
}
, 没有冒犯,但此代码是...粗略的。将其发布在codereview.stackexchange.com上以获取一些重构的帮助。现在,一个快速提示是使用PDO,至少不要使用您的输入。
无论如何,正如答案所指出的那样,您只需在其中包含\“ foreach \”代码的字符串中回显即可。从字符串中取出。我可能会使用RobertPitt建议的implode
。考虑通过让mysql进行排序来更有效地对数据库中的数据进行排序和选择。不要使用ѭ16,因为那绝对没有任何意义。明确命名变量。此外,您的href标记格式错误-即使将foreach循环从回声中拉出来,您也可能看不到正确的结果,因为您的浏览器可能会将其全部渲染掉。确保将这些引号放在应有的位置。