在php控制台中比较用户输入和csv文件

13z8s7eq  于 2023-06-20  发布在  PHP
关注(0)|答案(1)|浏览(115)

我正在创建一个系统,用户可以使用它来查看其他用户是否在平台上活跃。代码的第一部分获取.csv文件(data.csv)并将其放入数组中。我在比较数组和用户输入时遇到了问题。
下面是PHP代码

<?php
$csvData = file_get_contents("data.csv");
$lines = explode(PHP_EOL, $csvData);
$a = array();

foreach ($lines as $line) {
    $a[] = str_getcsv($line);
}

$user = readline("Enter Username: ");

if (in_array($user,$a)) {
    print_r("good");
}
?>

下面是csv文件

username,status
TestUser,active
Admin,not-active

我已经检查了php网站,找不到任何关于这个的文档。任何帮助将不胜感激!

fnx2tebb

fnx2tebb1#

使用array_map,你可以通过循环数组来做一些事情,比foreach更短。
此外,您应该从文件中删除头,否则它将用于检查用户名。

//$csvData = file_get_contents("data.csv");
$csvData = "username,status
TestUser,active
Admin,not-active";

$lines = explode(PHP_EOL, $csvData);

// remove the header line
unset($lines[0]);

// get the values of all lines
$values = array_map(fn($v) => str_getcsv($v, ","), $lines);

// get only usernames
$userNames = array_column($values, "0");

//$user = readline("Enter Username: ");
$user = "MyUser";

if(in_array($user, $userNames)) {
    print("Found.");
}
else {
    print("Not found.");
}

你可以在这里测试https://3v4l.org/4CTTg
取决于你的php版本,从7.4开始你可以使用Arrow function,一种更短的声明匿名函数的方法。对于较低版本,请使用以下命令:

$values = array_map(function($v){ return str_getcsv($v, ","); }, $lines);

相关问题