繁体   English   中英

给定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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM