PHP:Warning:sort()要求参数1是数组,资源给定
我想用sort()函数来排列表列表的数组,但得到了同样的警告 我的代码如下:PHP:Warning:sort()要求参数1是数组,资源给定,php,mysql,Php,Mysql,我想用sort()函数来排列表列表的数组,但得到了同样的警告 我的代码如下: <?PHP require_once("lib/connection.php"); $result = mysql_query("SHOW TABLES FROM `st_db_1`"); sort($result); foreach ($result as $result){ echo $result ; } ?> 它清楚地表示:
<?PHP
require_once("lib/connection.php");
$result = mysql_query("SHOW TABLES FROM `st_db_1`");
sort($result);
foreach ($result as $result){
echo $result ;
}
?>
它清楚地表示:它需要一个数组,而您传递的是其他内容
如果您检查了
$result
的类型,您会发现它不是一个数组,而是一个资源。警告非常清楚:mysql\u query
不会返回包含查询结果的数组,而是一个资源。您需要一个类似于mysql\u fetch\u array()
的函数来返回所需的数据(并且可以对其执行排序操作)
有关mysql\u query()的使用,请参阅手册。
也许是不相关的,但您可以通过在查询中添加
orderby
来立即在MySQL中对结果进行排序。我并没有提供可以想象的最有效的代码,但这应该可以清楚地说明发生了什么,并解决您的问题:
$result = mysql_query("SHOW TABLES FROM `st_db_1`");
$my_array_of_table_names = array();
while ( $row = mysql_fetch_array($result, MYSQL_NUM)) {
$my_array_of_table_names[] = $row[0];
}
sort($my_array_of_table_names);
foreach ($my_array_of_table_names as $table_name){
echo "$table_name\n";
}
您的问题是,您实际上没有从查询中获取数据
mysql\u query()
不会提供记录集
它所做的是查询数据库并返回一个数据库资源,然后您可以使用它来获取数据
您需要的是在调用
mysql\u query()
之后,还需要调用mysql\u fetch\u array()
或类似的函数。(有一系列可用的函数,但这可能是本例中使用的最佳函数)。然后sort()
从中提取数据,而不是$result
变量$result只是result类型的资源。然后需要从结果集中获取数据,例如
你需要先知道结果。例如,使用
$row=mysql\u fetch\u数组($result):
您需要查找mysql\u query
返回的内容,以及mysql\u fetch\u assoc
。顺便说一句,您需要使用print\r
而不是echo
来查看的结构。以及在您的foreach循环中,您正在覆盖$result
变量,这可能根本不是您想要的。我选中了,,,如果表名是数组,但我可以使用while loopYup成功地获取表的数组,将排序移动到正确的位置。这就是我在发布前没有测试的原因。嗯,我现在要去测试一下,以确保我没有让事情变得更糟。没问题,主要问题是问这个问题的人没有拿到行数。你展示了这个。现在我们得到了几乎相同的答案。我给了你一个要点,以后可能会删除我的答案,因为它们太相似了。
$result = mysql_query("SHOW TABLES FROM `st_db_1`");
$my_array_of_table_names = array();
while ( $row = mysql_fetch_array($result, MYSQL_NUM)) {
$my_array_of_table_names[] = $row[0];
}
sort($my_array_of_table_names);
foreach ($my_array_of_table_names as $table_name){
echo "$table_name\n";
}
$result = mysql_query("SHOW TABLES FROM `st_db_1`");
$array = array();
while ($row = mysql_fetch_assoc($result)) {
$array[] = $row["Tables_in_st_db_1"];
}
sort($array);
foreach ($array as $item) {
echo $item;
}