0

重複の可能性:
phpのcsvファイルからデータを抽出する方法

私が最近受け取った課題は、私に模擬出会い系サイトを作るように頼んでいます。多くの作業が提供されており、私に必要なのはPHPを作成することだけです。私が立ち往生しているのは、クエリされた名前と.txtファイル(すでに入力されている名前のデータベース)内の名前との間の「一致」を探すことです。テキストファイルは次のようになります。

Jenny,F,28,INTJ,Gentoo,18,30
Michael,M,22,ISTJ,Windows,20,25
...
Name,Gender,Age,Personality,OS,minage,maxage

私が作業しているページでは、(。txtファイル内の1人の)名前の入力を求められ、一致する可能性のあるものが見つかります。「一致」とは、次のすべての人を指します。それぞれの年齢範囲内で、性別が対立し、性格タイプが少なくとも2文字(例:ISTP + ESFP =一致)で、同じお気に入りのオペレーティングシステムを共有している人。次に、一致するものをHTMLで表示します。これは私ができることです。

私の問題は、テキストファイルを相互参照する方法が完全にわからないことです。私は当初、.txtの各行をより大きな配列の配列要素に配置する必要があると考えていました。

<?php
    //Initialize the contents of the url (.php?name=$$$) into a variable $inputname
    $inputname = $_GET["name"];
    //Finds how many lines in the singles.txt file
    $lines = count(file("./singles.txt"));
    //Initialize each line into an array
    $matchespre = file("./singles.txt");
?>

...しかし、特定の文字(INTJ、M、30、40など)を検索する方法がわかりません。

どうすれば希望の結果を得ることができますか?私の最終目標が何であるかを理解するのが難しい場合は申し訳ありませんが、質問自体を理解するのは非常に困難です(私の意見では)。どうやら私は画像を投稿するという評判がないようです。そうでなければ、割り当ての質問自体をスクリーングラブして投稿します。

編集; おそらく私が探しているのは、.txtの各行を文字列に入れる方法だと思います(例:string1 = Jenny、F、28、INTJ、Gentoo、18,30; string2 = Michael、M、22、 ISTJ、Windows、20,25など)、次に各文字列をexplode()して配列にするので、たくさんの配列があります。次に、各配列を順番に検索して、一致する性別、年齢範囲などを探します。PHPが正確に何をすべきかを知るために提供しなければならない関数の百科事典が不足しています。

4

2 に答える 2

2

すべての値が同じ順序である場合は、それらを配列に入れて適切な値に並べ替えることができます。配列を作成して行をループするだけです...

// Jenny,F,28,INTJ,Gentoo,18,30

// make an array to put your values in
$array = array();

// loop through the lines
foreach($text as $line) {
  $values = $explode(",",$line);
  $array[]['name'] = $values[0];             // Jenny
  $array[]['gender'] = $values[1];           // F
  $array[]['age'] = $values[2];              // 28
  $array[]['whatever_that_is'] = $values[3]; // INTJ
  $array[]['operating_system'] = $values[4]; // Gentoo
  $array[]['min_age'] = $values[5];          // 18
  $array[]['max_age'] = $values[6];          // 30
}

申し訳ありませんが、適格な人を探したいと思うかもしれません...!

// search for the gender in your array
// set the gender you are looking for
$gender = "M";
// make a new array
$nameArray = array();

// loop through your other array
foreach($array as $fieldArr) {
  if($fieldArr['gender'] = $gender;) {
    // echo or add that person to another array,
    //or whatever you want to do
    echo $fieldArr['name'] . "<br />\n";
  }
}
于 2012-11-11T17:21:00.620 に答える
0

すべての行を1ビットの引数に分割します。

$arrDating = array();
foreach($matchespre as $line) {
    array_push($arrDating, explode(',', $line) );
}
于 2012-11-11T17:20:23.493 に答える