繁体   English   中英

PHP多维数组排序

[英]PHP Multi Dimensional Array Sorting

编辑:我需要它只在数组排序中,因为我正在使用过程并将其发送到json,

这是我的表结构,

SQL小提琴

在此处输入图片说明

我想显示为

  1. 伦敦
  2. 纽约纽约
  3. Beta德里
  4. 贝塔悉尼

我的意思是,第二列(名称)应按升序排列,而第三列(位置)应按降序排列。

我想要的是

  1. 伦敦
  2. 阿尔法纽沃克
  3. Beta德里
  4. 贝塔悉尼

名称应按升序排列,然后在右侧,位置应按降序排列

到目前为止,我尝试过的是

我怎样才能做到这一点 ??

<?php
include ('conn.php');
$sql="SELECT * FROM test";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
while($rows=mysql_fetch_array($result))
{
foreach($result as $k=>$v)
{
echo $k;

}
}
?>

它将结果显示为为每个提供的Invalid参数。 我正在做的错误是什么,如何实现我的输出

要解决排序问题,只需添加ORDER BY名称,位置

然后还有其他一些问题使它无法正常工作:

  1. 您不应在循环外调用mysql_fetch_array(这将丢弃第一行,在您的示例中为alpha london)。
  2. 您需要遍历$rows而不是$result (这是“无效参数”错误的出处)。
  3. 您不是在回馈价值; 只有钥匙。 因此,您根本不会显示名称和地点。 只有单词“名称”和“地点”。

您可能需要执行以下操作来解决这些问题:

<?php
include('conn.php');
$sql = "SELECT * FROM test ORDER BY name, place";
$result = mysql_query($sql);
while ($rows = mysql_fetch_array($result)) {
  foreach ($rows as $k => $v) {
    echo "$k is $v. ";
  }
  echo "<br/>";
}
?>

那么,为什么不像这样在查询中进行订单

SELECT * FROM test order by name;

您只能执行修改查询的操作。

使用此查询:

SELECT * FROM test ORDER BY name ASC, place DESC

对于您的错误,您使用了错误的变量作为foreach。 取代这个-

foreach($result as $k=>$v)
{
    echo $k;
}

有了这个 -

foreach($rows as $k=>$v)
{
    echo $k;
}

购买为什么在while循环中使用foreach。 您可以得到像-

while($rows = mysql_fetch_array($result)) {
    echo $rows['name'].' '.$rows['place'].'<br/>';
}

并且不要使用mysql_*函数。 改用mysqli_*

为了获得预期的输出,请尝试使用以下查询-

SELECT * FROM `test` order by name asc, place desc

您可以使用array_multisort修复这种问题。 请尝试以下示例(我尚未测试过,但应该可以使用)

<?php
include ('conn.php');
$sql="SELECT * FROM test";
$result=mysql_query($sql);

$totals = array();
$row = array();
$places = array();
while($row=mysql_fetch_array($result)){
    $totals[] = $row
    $names[] = $row['name'];
    $places[] = $row['place'];
}
array_multisort( $names, SORT_ASC, $places, SORT_DESC, $totals );

// now you can use $totals, which is sorted as you want
print_r( $totals );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM