【问题标题】:Sort multi-dimensional array built from CSV data using PHP使用 PHP 对从 CSV 数据构建的多维数组进行排序
【发布时间】:2010-12-07 18:37:19
【问题描述】:

尝试在 PHP 中对从 CSV 填充的数组进行排序。理想情况下,我还希望能够通过单击tabs in the table here 来控制排序。不过,现在,我手头的第一个任务就是对这该死的东西进行排序。现在已经为此工作了 3 多天。 。 任何帮助是极大的赞赏!!干杯!

PHP

<?php 

$fp = fopen("https://spreadsheets.google.com/pub?key=0AjZgwY03sLMGdHVoWjhucGowWWJBb2g2NnQzVG9HZFE&hl=en&single=true&gid=0&output=csv","r"); 
$rows = array(); 
while (($row = fgetcsv($fp)) !== FALSE) { 
    $rows[] = $row; 
}
fclose($fp); 

$headers = array_shift($rows);
foreach ($rows as $row) : list($ShowKey, $ShowFeedURL, $ShowLink, $ShowIcon, $ShowTitle, $ShowTag, $ShowCategory, $ShowEps, $ShowLastUpdate, $ShowNew) = $row;

$oddpost = ( empty( $oddpost ) ) ? '_odd' : ''; ?>

【问题讨论】:

  • 我会使用自定义回调函数查看usort

标签: php arrays sorting csv multidimensional-array


【解决方案1】:

我最近这样做了。我有一个来自数据库的多维记录数组,我需要根据数组中的一个特定列对它们进行排序。这是我所做的:

foreach($TimeRecords as $key => $value)
{
   $Rates[$key] = $value['rate'];
}
array_multisort($Rates, SORT_ASC, $TimeRecords);

我构建了一个仅包含我需要的列的数组,然后我使用 array_multisort() 函数根据该列对数组进行排序。

您可以编写将在 PHP 中执行此操作的函数,然后使用 javascript ajax 调用调用它们,并在完成排序后重新加载页面的该部分。

【讨论】:

  • 哈!七年后,这就是我所需要的……经过数小时的搜索!
【解决方案2】:

您可以考虑在客户端用 Javascript 对表格进行排序,而不是在 PHP 中进行排序。例如看看这个 jQuery 插件:http://tablesorter.com/

【讨论】:

  • 哇,谢谢克里斯.. 我现在要检查一下.. 我非常喜欢它,它看起来很容易实现。如果这对我有用,我会告诉你..
  • Table Sorter 插件很棒,但是在实现它之后,我意识到奇数/偶数颜色的行也会移动,所以它打破了我试图通过设计实现的模式......尽管如此。 . 这个插件可以节省大量时间,我已经为它添加了书签.. 谢谢!!
  • 我成功了,克里斯!有一个名为“Zebra”的小部件,它必须通过 javascript 激活,然后“奇数”和“偶数”类会自动添加到表中的 TR 和 TD 中。非常感谢!!
  • 很高兴 :-) 很高兴听到它对您有用。
【解决方案3】:

您可能会发现usort() 功能很有帮助。它接受回调参数,可用于按特定字段排序。

【讨论】:

  • 谢谢你,Kel——我是 PHP 的新手,我尝试使用 usort() 但不太清楚如何/在我的代码中实现它的位置。几乎似乎 array_multisort() 会是更好的选择,但同样,无法弄清楚如何使其工作。你知道吗,我的代码的“ foreach ($rows as $row) : list (...” 部分是否为我的主数组中的每个数组定义了数据键?
  • array_multisort() 也可以使用 - 请参阅 CrowderSoup 的答案。我没有得到关于“foreach”部分代码的问题。 list() 函数只允许一次将数组中的值分配给一堆变量。详情可以关注ru.php.net/manual/en/function.list.php
【解决方案4】:

我今天遇到了类似的问题。基本上我最终做的是创建一个临时表,我从我需要的 csv 文件的行中加载它。从那里,我使用 php 对数据进行排序和组织,并更新或添加到我需要更改的表中。

例如,我创建了一个名为“temp”的表,并将其加载到所需类别的所有行中。然后,一旦这在表中,我制作了一个 php 脚本,该脚本按总销售额降序对信息进行排序。从那里,我做了一个查询来更新我的主表,并使用一个限制来控制它(仅销售数量排名前 200 的商品)。

这很容易做到,希望对您或其他人有所帮助。

请记住。如果您要多次执行此操作,则需要先截断临时表以删除旧行。

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 1970-01-01
    • 2019-10-22
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多