首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在foreach循环中使用array_count_values

在foreach循环中使用array_count_values
EN

Stack Overflow用户
提问于 2021-12-01 13:34:15
回答 3查看 40关注 0票数 0

我希望样本输出如下所示。

1: 2次

2: 3次

3: 2次

4: 1发生

5: 1发生

7: 1发生

出现的次数基于表单格式中的用户输入。下面是我用来让用户输入数字的Html代码。

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<style>
h1{
text-align:center;
}
form{
text-align:center;
margin:auto;
border-style: solid;
width:700px;
height:250px;
}
</style>
<body>

<form action="page2" method="get">
<h1>Algorithm Calculator</h1>
<label for="fname">Enter Number with Comma <br> eg: 
1,2,3,4,4,5,5,7</label><br><br>
<input type="text" id="number" name="number"><br> 
<br>
<input type="submit" value="Confirm">
</form> 
</body>
</html>

第二页代码

代码语言:javascript
复制
<?php
$number=$_GET['number'];
$result = array();
$result = explode(',',$number);
foreach ($result as $value){
echo "$value = ".array_count_values($result) 
[$value]." occurrences <br>";
}
?>

我只希望我的代码循环一次,但是如果用户输入相同的数字两次,它就会循环不止一次。下面是我的输出。

1=1次

2=1次

3=1次

4=2次

4=2次(我不希望这个循环两次)

EN

回答 3

Stack Overflow用户

发布于 2021-12-01 13:37:25

在进入循环之前,您将需要处理用户输入。

代码语言:javascript
复制
$result = explode(',',$number);
foreach (array_unique($result) as $value){
   echo "$value = ".array_count_values($result) 
   [$value]." occurrences <br>";
}

您将只保留数组中的唯一值,以便每个值只循环一次。

票数 1
EN

Stack Overflow用户

发布于 2021-12-01 13:46:06

array_count_values函数提供数组中的唯一元素作为键,还提供出现的次数作为数组中的值。因此,解决方案可以如下所述:

代码语言:javascript
复制
<?php
    $number=$_GET['number'];
    $result = array();
    $result = explode(',',$number);
    foreach (array_count_values($result) as $key => $value) {
        echo "{$key} = {$value} occurrences <br />";
    }
?>
票数 1
EN

Stack Overflow用户

发布于 2021-12-01 13:52:35

循环遍历a array_count_values()的结果,这很简单。

代码语言:javascript
复制
$number='9,9,4,4,22,22,22';
$result = explode(',',$number);
print_r(array_count_values($result));

foreach(array_count_values($result) as $n=>$occ) {
    echo "$n = $occ occurrences <br />" . PHP_EOL;
}

结果

array_count_value()生成一个数组,其关键字是被计数的数字,值是这些数字的出现次数

代码语言:javascript
复制
Array
(
    [9] => 2
    [4] => 2
    [22] => 3
)

所以输出结果是

代码语言:javascript
复制
9 = 2 occurrences <br />
4 = 2 occurrences <br />
22 = 3 occurrences <br />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70185163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档