PHP MySQL排序多维数组


PHP MySQL Sort Multidimensional Array

所以这让我抓狂。我需要从mySQL中提取表行,然后对它们进行排序,但之后我需要将它们作为单个数组输出。主要是因为这之后的代码是为了接受这一点而写的。

这是我的密码。如果你有什么建议,请告诉我。

<?php
include 'connect.php';

$query = mysql_query("SELECT * FROM users");
while ($data = mysql_fetch_assoc($query))
{
    $newarray[]=$data; 
    $dbusername = $data['username'];
    $dbpassword = $data['password'];
    $logid = $data['id'];
    print_r ($data);
    echo "<br/>";
}
foreach ($newarray as $key => $row) {
$volume[$key]  = $row['password'];
}
array_multisort($volume, SORT_ASC, $newarray);
print_r($newarray);
?>

这样做的结果是:

Array ( 
[0] => Array ( [id] => 4 [rating] => 18 [password] => 1981 [username] => 212060064) 
[1] => Array ( [id] => 2 [rating] => 6  [password] => 1983 [username] => 212060062)
[2] => Array ( [id] => 3 [rating] => 5  [password] => 1984 [username] => 212060063)
[3] => Array ( [id] => 1 [rating] => 3  [password] => 1988 [username] => 212060061) 
)

然而,我需要像这样输出它们:

Array ( [id] => 4 [rating] => 18 [password] => 1981 [username] => 212060064)
Array ( [id] => 2 [rating] => 6  [password] => 1983 [username] => 212060062) 
Array ( [id] => 3 [rating] => 5  [password] => 1984 [username] => 212060063)
Array ( [id] => 1 [rating] => 3  [password] => 1988 [username] => 212060061) 

根据您的演讲:

这样做的结果是:

Array ( 
[0] => Array ( [id] => 4 [rating] => 18 [password] => 1981 [username] => 212060064) 
[1] => Array ( [id] => 2 [rating] => 6  [password] => 1983 [username] => 212060062)
[2] => Array ( [id] => 3 [rating] => 5  [password] => 1984 [username] => 212060063)
[3] => Array ( [id] => 1 [rating] => 3  [password] => 1988 [username] => 212060061) 
)

然而,我需要像这样输出它们:

Array ( [id] => 4 [rating] => 18 [password] => 1981 [username] => 212060064)
Array ( [id] => 2 [rating] => 6  [password] => 1983 [username] => 212060062) 
Array ( [id] => 3 [rating] => 5  [password] => 1984 [username] => 212060063)
Array ( [id] => 1 [rating] => 3  [password] => 1988 [username] => 212060061) 

因此,在SORT的方式上没有发现任何差异。

在您的最后一行代码中,替换:

print_r($newarray);

发件人:

foreach($newarray as $child_array)
{
    print_r($child_array);
}

最简单的事情可能是直接在SQL:中对它们进行排序

SELECT * FROM users ORDER BY id

我个人尽量避免在array_multissort上挣扎,因为它很难使用。我还没有发现_multisort比usort或让数据库层处理它更容易的问题。

您需要单独的数组,对吗?此代码将创建单个阵列:

include 'connect.php';
$query = mysql_query("SELECT * FROM users");
$x = 0;
while($data = mysql_fetch_assoc($query)){
    $variable_name = 'record'.$x;
    $$variable_name = $data;
    $x++;
}
print_r($record0);
print_r($record1);
//etc...

第一次运行时的双$$将是$record0