Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中对CSV文件中的表中的列进行排序?_Php_Csv_Sorting_Html Table - Fatal编程技术网

如何在PHP中对CSV文件中的表中的列进行排序?

如何在PHP中对CSV文件中的表中的列进行排序?,php,csv,sorting,html-table,Php,Csv,Sorting,Html Table,我尝试从PHP中的CSV文件中对第二列进行排序。 我使用此代码进行排序,但我没有得到排序,这是我的代码: if (($handle = fopen($address_book, "r")) !== FALSE) { $text_to_html = "<table border='1'>"; $sum = array(); while (($data = fgetcsv($handle, 1000)) !== FALSE) { arr

我尝试从PHP中的CSV文件中对第二列进行排序。 我使用此代码进行排序,但我没有得到排序,这是我的代码:

    if (($handle = fopen($address_book, "r")) !== FALSE) {
    $text_to_html = "<table border='1'>";
    $sum = array();


    while (($data = fgetcsv($handle, 1000)) !== FALSE) {
        array_push($sum, $data[0]);
        array_push($mdarray, $data);
        $num = count($data);

        //echo "<p> $num fields in line <br /></p>\n";
        if ( $data[0] == "first_name" ) {
            //first loop of while will print table header
            $text_to_html .=  "<tr><th>";
            for ($c=0; $c < $num; $c++) {
                //echo $data[$c] . "<br />\n";
                $text_to_html .= $data[$c] . "</td><td>";           
            }
            $text_to_html .= "</th></tr>";
        } else {
            $text_to_html .= "<tr><td>";
            $first_name = $data[0];
            $last_name = $data[1];
            $text_to_html .= $last_name . "</td><td>";
            $text_to_html .= "</td></tr>"; 
        }


    }
       fclose($handle);
       foreach ($mdarray as $key => $row) {
       $names[$key]  = $row[1];
 }
 array_multisort(array_column($mdarray, 1), SORT_ASC, $mdarray);
if($handle=fopen($address\u book,“r”)!==FALSE){
$text_to_html=“”;
$sum=array();
while(($data=fgetcsv($handle,1000))!==FALSE){
数组_push($sum,$data[0]);
数组推送($mdarray,$data);
$num=计数($data);
//echo“$num行中的字段

\n”; 如果($data[0]=“first_name”){ //while的第一个循环将打印表格标题 $text_to_html.=“”; 对于($c=0;$c<$num;$c++){ //echo$data[$c]。“
\n”; $text_to_html.=$data[$c]。“”; } $text_to_html.=“”; }否则{ $text_to_html.=“”; $first_name=$data[0]; $last_name=$data[1]; $text_to_html.=$last_name.“; $text_to_html.=“”; } } fclose($handle); foreach($mdarray作为$key=>$row){ $names[$key]=$row[1]; } 数组\多排序(数组\列($mdarray,1),排序\ ASC,$mdarray);

谢谢:)

只需将$mdarray声明为while循环之外的数组并检查。

代码中有两个错误

首先是:您没有将
$mdarray
声明为array()。如果不声明array,array\u push将无法工作

第二个问题是:您没有在末尾关闭foreach循环,这里缺少右括号

foreach ($mdarray as $key => $row) {
       $names[$key]  = $row[1];

解决这些错误后,您将获得排序数组。

当您希望对数据进行排序时,看起来好像是在显示此代码中的信息后对其进行排序。