Php 扫描.txt中的行以查找特定值

Php 扫描.txt中的行以查找特定值,php,Php,可能重复: 我最近收到一份任务,要求我制作一个模拟约会网站。提供了大量的工作,我所需要做的就是编写PHP。我一直关注的部分是在.txt文件(已输入名称的数据库)中查找查询名称和名称之间的“匹配”。文本文件如下所示: Jenny,F,28,INTJ,Gentoo,18,30 Michael,M,22,ISTJ,Windows,20,25 ... Name,Gender,Age,Personality,OS,minage,maxage 我正在使用的页面会提示我输入一个名字(在.txt文件中的一个

可能重复:

我最近收到一份任务,要求我制作一个模拟约会网站。提供了大量的工作,我所需要做的就是编写PHP。我一直关注的部分是在.txt文件(已输入名称的数据库)中查找查询名称和名称之间的“匹配”。文本文件如下所示:

Jenny,F,28,INTJ,Gentoo,18,30
Michael,M,22,ISTJ,Windows,20,25
...
Name,Gender,Age,Personality,OS,minage,maxage
我正在使用的页面会提示我输入一个名字(在.txt文件中的一个人的名字),然后查找可能的匹配项。“匹配”是指具有以下所有特征的任何人:性别相反,在各自的年龄范围内,共享至少两个个性类型的字母(例如ISTP+ESFP=match),以及相同的喜爱的操作系统。然后用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等),然后将每个字符串分解成一个数组,这样我就有了一组数组。然后,我可以按顺序搜索每个数组,以查找匹配的性别、年龄范围等。我只是缺少PHP提供的功能百科全书,无法准确地知道该做什么。

我将每一行拆分为单个参数位:

$arrDating = array();
foreach($matchespre as $line) {
    array_push($arrDating, explode(',', $line) );
}

如果所有值的顺序都相同,您可以很高兴地将它们放入一个数组中,并对其进行排序,以获得适当的值,只需创建一个数组并通过行循环即可

// 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";
  }
}
//在数组中搜索性别
//设置您要查找的性别
$gender=“M”;
//制作一个新数组
$nameArray=array();
//在另一个数组中循环
foreach($fieldArr形式的数组){
如果($fieldArr['gender']=$gender;){
//回显或将此人添加到另一个数组中,
//或者你想做的任何事
echo$fieldArr['name']。“
\n”; } }
你足够聪明,可以胜任这项任务。您只是缺少文档;)。。。给你:我建议将“which_that_”拆分为一个单独的数组:$array[][which_that_']=explode($values[3],”);非常感谢。请原谅,但我不完全确定foreach()是如何工作的;有没有一种方法可以通过使用for循环来实现这一点?我的理解是它们是一样的,这取决于你使用什么;我更喜欢for而不是foreach。foreach()只是一个lazymans for();)它循环遍历数组中的所有项,就好像您在执行$item[$i]或其他任何操作一样。这很有意义。我首先学习了C语言,与foreach()相比,使用更长的for循环似乎更符合逻辑,但我就是这样。谢谢你的帮助,我真的很感激!这些值存储在哪里?恐怕我不太明白。编辑事实上,我想我有点明白了。它将它们存储到[i][j];我在C语言中遇到过类似的多维数组。我想这是PHP的等价物?确切地说,值[0][2]将是第一行的第二个值:“28”非常好,谢谢!现在一切都很顺利。酷:)。。。我在上面的评论中发现了一个错误:arrDating[0][2]当然是第三个值,而不是第二个值。