我已经尝试了大约三天,但我无法弄清楚。 目的是让用户输入数字并过滤掉唯一的数字。假设用户输入了数字:24、24、56、23、1、3、24-输出应为24、56、23、1、3。到目前为止,一切似乎都正常。唯一的事情是,当我按下“提交”按钮时,它不返回任何值。
<!DOCTYPE html>
<!-- e9_1.php
Project1.php
-->
<html lang = "en">
<head>
<title> Project1.php </title>
<meta charset = "utf-8" />
<?php
function unique($strings) {
$uniqueStrings = array();
foreach ($strings as $string) {
foreach ($uniqueStrings as $uString) {
if ($string == $uString) break;
if(isset($_POST[‘numbers’])){
$str=preg_split("/[\s,]", $_POST['numbers']);
}
}
if ($string != $uString)
$uniqueStrings[] = $string;
}
return $uniqueStrings;
}
?>
</head>
<body>
<?php
$str = array();
$uStr=unique($str);
foreach ($uStr as $st)
print ("$st <br />");
?>
<br>
Enter Numbers: <br>
<form method = "POST">
<input type="text" name="numbers"/>
<input type="submit" name="Submit" />
</body>
</html>
答案 0 :(得分:1)
这是您的任务的有效代码段。我已经大部分重写了。
<?php
//$_POST['numbers'] = " 24, 24, 56, 23, 1, 3, 24";
function getNumbers($string) {
$string = preg_replace("/[\s]/","",$string); // remove all possible space, tabs, etc
$n = explode(",", $string); // a simple explode will be enough then
return $n;
}
$numbers=array_unique(getNumbers($_POST['numbers'])); // finally use array_unique() to get rid of the doubles.
var_dump($numbers);
// OUTPUT:
array(5) {
[0]=>
string(2) "24"
[2]=>
string(2) "56"
[3]=>
string(2) "23"
[4]=>
string(1) "1"
[5]=>
string(1) "3"
}
可以在以下位置找到代码段:https://3v4l.org/BK0eU
您的代码中的问题是:
$_POST[‘numbers’]
(带引号)注意:这个简单的功能尚未检查数字和逗号以外是否还有其他输入。
答案 1 :(得分:1)
您是从单个文本输入中获取用户输入的。
<input type="text" name="numbers"/>
这意味着$_POST['numbers']
将是一个字符串,而不是数组,因此您的unique
函数需要一个字符串。
如果您要查找唯一数字,那么最好对数字序列进行正匹配,而不是在空格或其他任何东西上进行拆分。
当PHP已经具有array_unique
函数时,您的函数非常复杂。只需匹配字符串中的数字并通过array_unique
运行结果数组即可。另外,我建议不要在诸如此类的辅助函数中引用像$_POST
这样的超全局变量。如果您希望它可重用,则应将其输入作为参数,而不要依赖于全局值。
基于所有这些,我将编写如下函数:
function unique_numbers(string $input): array
{
preg_match_all('/\d+/', $input, $matches);
return array_unique($matches[0]);
}
并使用发布的字符串进行调用
$numbers = unique_numbers($_POST['numbers']);
答案 2 :(得分:0)
如何利用PHP函数使其更简单?
<!DOCTYPE html>
<html lang = "en">
<head>
<title> Project1.php </title>
<meta charset = "utf-8" />
</head>
<body>
<?php
if (isset($_POST['numbers'])) {
$strings = $_POST['numbers'];
$str = explode(",", $strings);
$uStr=array_unique($str);
echo implode(",", $uStr);
}
?>
<br>
Enter Numbers: <br>
<form method = "POST">
<input type="text" name="numbers"/>
<input type="submit" name="Submit" />
</body>
</html>