• 締切済み

CSV形式の並び替え

いつも助言頂き感謝します。 CSVファイルに下記のように 名前,性別,年齢 を記述したファイルがあります。 これを配列にいれ、listとsplit でTABLEを表示させることは出来るのですが、取り込んだ配列を年齢の若い順に表示させるにはどのようにすれば良いでしょうか? $log_name = "/home/www/luzy.castsystem.jp/log/4.txt"; $array = file($logfile); $c = count($array); $i = 0; while($i < $c){ list($name,$sex,$age) = split("\,",$array[$i]); $i++; } 太郎,男,15 一郎,男,10 次郎,男,18 花子,女,17

みんなの回答

  • i2719
  • ベストアンサー率35% (11/31)
回答No.2

$array = file($logfile); foreach($array as $person){ list($name,$sex,$index[]) = split('\,',$person); } array_multisort($index,SORT_NUMERIC ,$array); echo '<table>'; foreach($array as $person){ list($name,$sex,$age) = split('\,',$person); echo "<tr><td>$name</td><td>$sex</td><td>$age</td></tr>"; } echo '</table>';

すると、全ての回答が全文表示されます。
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

まずは $name,$sex,$age も配列としていったん値を格納し、array_multisort()で$ageをキーにソートすればいいかと思います。 while($i < $c){ list($name,$sex,$age) = split("\,",$array[$i]); $i++; } の部分を、 while($i < $c){ list($name[$i],$sex[$i],$age[$i]) = split("\,",$array[$i]); $i++; } array_multisort($age,SORT_NUMERIC ,$name,$sex); として、この後で、改めてループを回してTABLEタグを組み立ててみてください。 array_multisort()の解説は以下を参照してください。 http://jp2.php.net/manual/ja/function.array-multisort.php

すると、全ての回答が全文表示されます。

関連するQ&A