0

私は、東南アジアの若者に関する政治と問題に取り組んでいる放課後のクラブからヨーロッパにいる現在交換留学生のシャラムです。私たちのグループでは、毎月世界中に新しいボランティアが集まり、私たちの国で意味を持つためにクラブが将来実行しなければならないタスクを分類し、優先順位を付けるために中央サーバーをセットアップしました. 私はPHPの知識がほとんどありませんが、学びたいと思っています。ここに私の問題があります...

SQL は複雑すぎるため、CSV を使用します。誰でもマスター CSV を編集し、次のようにタスクを追加できます。

Priority,Task,Person
High,Campus flyers,Ashley
High,Test videocall with teacher,Sharam
Low,New Website,Martin & Aneet
Medium,Auditorium recruiting,Martin & Aneet & Ashley
Low,Garbage collecting,Sharam & Ashley
High,Ask permission to reserve classroom Sat & Sun,Sharam

ご覧のとおり、項目の優先度は高、中、低の順になっています。array_merge_recursive() を試しましたが、間違っている可能性があります:

<?php

$file = @fopen("tasks-list.csv", "r") or exit("error, check server status");

$array = array();
$header = fgetcsv($file, 1000, ","); //don't need header in array

while (!feof($file)) {
  $data = fgetcsv($file, 1000, ",");
  if (!empty($data)) {
    $array = array_merge_recursive($array, array($data[0] => $data[1], $data[2]));
  }
}
fclose($file);
?>

結果が混同されており、次のように列ごとにグループ化された CSV 入力を作成する方法がありません。

High priority tasks:
1. Campus flyers (Ashley)
2. Test videocall with teacher (Sharam)
3. Ask permission to reserve classroom Sat & Sun (Sharam)

Medium priority tasks:
1. Auditorium recruiting (Martin & Aneet & Ashley)

Low priority tasks:
1. New Website (Martin & Aneet)
2. Garbage collecting (Sharam & Ashley)

私のコードにはプレゼンテーション部分がありませんが、難しい部分ではありません。HTML は簡単ですが、適切にグループ化された配列に問題があります。どうすれば達成できますか?ありがとうございました

私の文法とスペルについて申し訳ありません、私はちょうど英語の2年目を学んでいます! --シャラム

4

2 に答える 2

1

私の PHP クラスをチェックしてください: http://pastebin.com/KVcYxuXY

これがその使用方法です

<?php 
require_once('CSV_parser.php');
// path to your csv file
$parser = new CSV_parser('c:/sample.csv');
// Result an array
$parser->toArray();
// To table
$parser->toTable();
// To JSON
$parser->toJSON();
?>
于 2012-07-31T00:40:56.763 に答える
0

Build an array that has the left most column as its index, and each entry in that array is the rest of the data in the row.

$result = array();
while (!feof($file)) {
  $data = fgetcsv($file, 1000, ",");
  $key = array_shift( $data);
  if( !isset( $result[ $key ])) {
    $result[ $key ] = array();
  }
  $result[ $key ][] = $data;
}

Now, to print it out, this is all you have to do:

foreach( $result as $priority => $entries) {
  echo $priority . ' priority tasks' . "\n";
  foreach( $entries as $i => $entry) {
      echo "$i. {$entry[0]} ({$entry[1]})\n";
  }
  echo "\n";
}
于 2012-07-31T00:29:47.307 に答える