我最近收到的一项任务要求我做一个模拟交友网站。提供了很多工作,我所需要的就是编写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 =匹配),以及相同的喜爱的操作系统。然后它以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必须提供的功能百科全书,以确切知道该做什么。
答案 0 :(得分: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";
}
}
答案 1 :(得分:0)
我将每一行分成单个参数:
$arrDating = array();
foreach($matchespre as $line) {
array_push($arrDating, explode(',', $line) );
}