【发布时间】:2018-07-14 17:41:01
【问题描述】:
我正在尝试按第 8 列对数组进行排序。第 8 列存储位置 1、位置 2、位置 3 等数据。 col8 必须仅与 col7 相关联,因为 col7 包含应由 col8 排序的答案。例如,如果 col8 = 位置 1 和 col7= 黄色,col8 = 位置 2 和 col7= 黑色,它应该打印黄色黑色。 我尝试实现我在此处找到的所有示例,但它不起作用。
function readCsv($fileName){
$handle = fopen($fileName, "r");
$data=array();
while ($col = fgetcsv($handle, 1000, ",")) {
$data[] = [
'Section' => $col[0],
'Q #' => $col [1],
'Q Type' => $col[2],
'Q Title' => $col[3],
'Q Text' => $col[4],
'Bonus' => $col [5],
'Difficulty' => $col[6],
'Answer' => $col[7],
'Answer Match' => $col[8],
'Responses'=> $col[9],
];
}
usort($data, function($a, $b) { return strcmp($a["Answer Match"], $b["Answer Match"]); });
fclose($handle);
return $data;
}
应该返回黄色黑色紫色。
我尝试使用此代码:
usort($data, function($a, $b) { return strcmp($a["Answer Match"], $b["Answer Match"]); });
但是,它是对第 1 列进行排序,而不是对第 7 列进行排序。
我的输出不正确,因为它打印了标题 (# Partipant) 并将参与者按字母顺序排列:
1> 参与者 2 橙色 白色 黑色 2>#参与者黑黄紫
正确的输出是:
1> 参与者 1 黄色 黑色 紫色
2> 参与者 2 橙色 黑色 白色
【问题讨论】:
-
什么应该打印黄黑?有点不清楚……
-
提供 csv 示例和结果示例(如果你有一个或者你可以做一个)
-
@MrSmile 它应该首先打印黄色,因为第 8 列的位置为 1。我想按位置排序,而不是按第 7 列的字母顺序。
-
@MrSmile 我将表格包含在上面的问题中。
-
你有多少行?您可能想先遍历所有行以确定每一行的位置,对吧?