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]当然是第三个值,而不是第二个值。