2015-11-02 145 views
-1
 foreach($myFile as $value){ 
      $arr = explode(",",$value); 

      echo "<tr>"; 
       foreach($arr as $out) { 

         if ((strcmp($arr[$city], $out)) == 0){ 
         echo "<td><i>" . $out . "</i></td>"; 
        } 

        else if((strcmp($arr[$pick], $out)) == 0){ 
         $var = ucfirst(strtolower($out)); 
         echo "<td>". $var. "</td>"; 
         unset($var); 
        } 

        else{ 
         echo "<td>" . $out . "</td>"; 
        } 
        $count++; 
        unset($out); 
       } 
      echo "</tr>"; 
      unset($arr); 
     } 
     unset($myFile); 

上面的代码用于读取.csv文件并将其打印为HTML表格。它已经在工作,但我在分类时遇到了一些麻烦。PHP:对数组进行排序

我的.csv文件的内容是变量$myFileThat's the output

现在我应该排列由列阵列,我该怎么做?

而另一个问题:为什么我会得到未定义偏移量的错误? 错误行是if((strcmp(...))。该阵列有10项和变量的值是:
$pick = 9
$city = 5

+0

我感到困惑,你要在这里进行排序... – Sumurai8

+0

整个输出应该被列进行排序什么* *最后我 –

+0

不认为你需要'unset()'vars。当(重新)定义它们时,它们会替换以前的任何值。 – MaggsWeb

回答

0

使用php multisort function的$ ARR数组定义之后对上。

foreach ($arr as $key => $row) 
{ 
    $last[$key] = $row['last']; 
} 
array_multisort($last, SORT_DESC, $arr) 
+0

它不工作,只是试了一下.. –

0

你可以用usort完成这个。它需要一个带有两个参数的函数,它们应该相互比较。该函数应该返回一个int。至于你的其他错误,我猜测你在一个函数中有这个代码,它不能访问全局变量。

请注意,试图找出你要显示的列是否是一个特殊的列,通过比较这些列的值是奇怪的。如果你想在某些列中做一些特殊的事情,只需迭代一个for循环而不是foreach循环,然后比较列索引。

function displayTable($myFile) { 
    global $columnCity, $columnPick; 

    usort($myFile, function($a, $b) { 
    global $columnLast; 
    return strcmp($a[$columnLast], $b[$columnLast]); 
    }); 

    echo "<table>"; 

    foreach($myFile as $value) { 
    $arr = explode(",", $value); 
    $count = 0; //Useless? 

    echo "<tr>"; 

    for($i = 0; $i < count($arr); $i++) { 
     $out = $arr[$i]; 
     if($i == $columnCity) { 
     echo "<td><i>{$out}</i></td>"; 
     } else if($i == $columnPick) { 
     $var = ucfirst(strtolower($out)); 
     echo "<td>{$var}</td>"; 
     unset($var); 
     } else { 
     echo "<td>{$out}</td>"; 
     } 
     $count++; 
     unset($out); 
    } 

    echo "</tr>"; 
    unset($arr); 
    } 

    unset($myFile); 

    echo "</table>"; 
} 

displayTable($input); 
?> 

小提琴,请访问:http://phpfiddle.org/lite/code/yqii-fkn2