我是PHP的新手,并且到处都在阅读不建议使用提取功能。我从mysql表中获取数据以填充网站的一部分。因此,我不知道桌子可以有多少行。
所以我使用了extract函数,它为每行提供了一个数组数组。为了创造一些有助于“回声”的变量。我使用此代码的每个字段:
$query = "SELECT * FROM example";
$result = mysqli_query($link,$query);
$num = mysqli_num_rows($result);
$gharray = mysqli_fetch_all($result,MYSQLI_ASSOC);
$arrayrows = array_keys($gharray);
foreach ($arrayrows as $arrayrow) {
$i = $arrayrow;
};
foreach ($gharray[$i] as $ghimg) {
extract ($gharray[$i], EXTR_PREFIX_ALL, "img"."$i");
};
完成工作并创建变量,例如:
$img1_title, $img1_description, $img2_title
等等(这将在评论中提及,因此这些变量在回溯时会有解释。
但我想知道这是否正确使用,或者是否有更简单,更清洁的解决方案来实现相同的结果。或者,如果有一组行限(即六行),你会采用不同的方式吗?
我们清理发布到数据库的所有内容,这样就不会有问题。 (另外,管理员是唯一可以在那里发布信息的人)。无论如何,帮助将不胜感激。
答案 0 :(得分:1)
您可以使用list ()
,但您需要一个枚举数组。检查PHP文档:
$row = [];
$row[0] = 123;
$row[1] = 'data';
list($id, $data) = $row;
http://php.net/manual/en/function.list.php
基本上list($id, $data) = $row;
会:
$id = $row[0];
$data = $row[1];
对于更多变量,这会更短。
答案 1 :(得分:0)
计算变量:
要计算变量(这似乎是你第一次循环的意图?),你可以使用:
$number_of_rows_in_your_array = count($arrayrows);
更清洁的解决方案:
您对如何填充网站并不十分具体。假设您想要填充具有相同行结构的简单表,那么您不需要x变量。相反,你可以用这样的东西替换你的两个循环:
echo '
<table>
<tr>
<td>
Header row
</td>
</tr>';
for($x=0;$x=count($arrayrows);$x++){
echo '
<tr>
<td>
'.$arrayrows[$x].'
</td>
</tr>';
}
echo '
</table>';
在这里,我使用数组,并在每次迭代时显示$ ith元素。因此,不需要x变量。