给定 PHP 中的数组,其中内容是用逗号分隔的字符串,如何提取字符串的第一部分


Given an array in PHP where the contents are strings separated by commas, how do I extract the first part of string?

>我有一个名为"single.txt"的文件。内容如下所示:

Array ( [0] => Ada Lovelace,F,96,ISTJ,Linux,24,99 
        [1] => Adele Goldberg,F,65,ENFJ,Windows,50,70 
        [2] => Alan Turing,M,41,ESTP,Mac OS X,31,50...
      )

首先,当新人注册时,它会将他们及其信息添加到.txt文件的末尾。我希望能够检查他们是否已经注册,并且我已经编写了以下函数:

function returnPerson($content){
    global $person_name;
    for($i=0 ; $i < count($content); $i++){
        if($person_name == array_slice($content,0,0)){
            $person = $content[$i];
            return $person;
        } else continue;
    }
}

但这似乎不起作用。

如何将字符串的第一部分(即名称部分)与检查人员的姓名进行比较?

谢谢!

试试这样的事情...您可能需要根据文本的输入方式稍微修改它,但应该可以让您走上正确的轨道:)

function returnPerson($content){
    global $person_name;
    foreach($content as $profile) {
        $profile = explode(',', $profile);
        if ($person_name == $profile[0]) {
            // Person Exists
            return $profile;
        }
    }
    return false; // person does not exist
}

你在循环时"切片"同一个数组。看起来您只需要一个简单的strpos()

if(strpos($content[$i], $person . ',') === 0){
  return ...
}

这是另一种不需要for循环的方法:

$names = array_map('reset', array_map('str_getcsv', $content));
if(in_array($person, $names)){
  ...
}      

它之所以有效,是因为您的数据似乎使用了CSV格式

您可以像这样遍历数组中的元素:

foreach ($content as $record) {
    // $record now contains string "Ada Lovelace,F,96,ISTJ,Linux,24,99"
}

您可以使用 explode() 函数从逗号分隔的字符串中提取字段:

$string = "Ada Lovelace,F,96,ISTJ,Linux,24,99";
$fields = explode(',', $string);
// $fields[0] now contains "Ada Lovelace"
// $fields[1] now comtains "F"
// ... etc

将它们放在一起,你会得到类似的东西:

foreach ($content as $record) {
    $fields = explode(',', $record);
    if ($fields[0] == $name_to_check) {
        // found it
    }
}
// didn't find it