PHP-来自用户输入的数组



我已经试了大约三天了,但我就是想不通。目标是让用户输入数字并过滤掉唯一的数字。假设用户输入数字: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>

以下是您任务的工作片段。我已经重写了大部分内容。

<?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

代码中的问题是:

  • 空数组作为函数unique的输入
  • preg_replace缺少结束分隔符
  • 带大引号的$_POST[‘numbers’]
  • 编码一个已经存在的函数(array_unique(

注意:这个简单的函数还不检查除了数字和逗号之外是否还有其他输入。

您从单个文本输入中获得用户输入。

<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']);

如何利用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>

相关内容

  • 没有找到相关文章

最新更新