我想看看如果数组具有相同的值多次,例如:如何检查是否数组有值多次
$array=array('val1','val2','val3','val1');
正如你所看到的,上面的阵列中,有2个x val1。 要搜索如果一个数组包含一个值,我可以用in_array做到这一点:
$search=in_array('val1',$array);
而且由于VAL1在数组存在,它将返回true,但我需要的,如果该值被发现多次返回true。
我想看看如果数组具有相同的值多次,例如:如何检查是否数组有值多次
$array=array('val1','val2','val3','val1');
正如你所看到的,上面的阵列中,有2个x val1。 要搜索如果一个数组包含一个值,我可以用in_array做到这一点:
$search=in_array('val1',$array);
而且由于VAL1在数组存在,它将返回true,但我需要的,如果该值被发现多次返回true。
你可以利用的array_keys()
一个不太知名的功能,该功能用于返回的数组的键作为新的阵列(即,没有值。)
它接受可选的第二个参数search
,它允许您规定您只希望返回那些与您的搜索对应的值。所以:
$arr = array('one', 'two', 'one', 'three');
$indexes = array_keys($arr, 'one'); //array(0, 2)
通过提供search_value作为array_keys的第二个参数。该函数将仅返回包含该值的数组的键。
$array=array('val1','val2','val3','val1');
$search = array_keys($array, 'val1');
作为参考,Please READ
请解释一下?你的建议为什么会起作用? – 2014-10-07 11:46:02
@PetruLebada我已经添加了参考答案。 – 2014-10-07 11:48:30
这个功能应该做的伎俩:
function check_multi($testVal,$arr) {
foreach($arr as $curVal) {
$counts[$curVal]++;
}
if(isset($counts[$val])
return $counts[$val];
else
return null
}
尝试
<?php
$array = array('val1','val2','val3','val1');
$cnt = array_count_values($array);
echo $cnt['val1'];
你的建议它很棒,但我有一个问题,即时搜索的价值,实际上是一个$ _POST ['val1'],我应该如何建立语法? $ cnt($ _ POST ['val1'])这很好? – 2014-10-07 12:08:53
$ _POST是数组,尝试array_count_values($ _ POST)['val1']; – Xrymz 2014-10-07 12:10:52
此语法不起作用... – 2014-10-07 12:15:11
你确定这个语法正确吗?我在编辑器中遇到了一些语法错误 – 2014-10-07 11:52:48
@Petru - 您使用的是哪个版本的PHP?这是数组解引用,它是在PHP 5.4.0中引入的 – 2014-10-07 11:53:16
最后一个版本 – 2014-10-07 11:53:44
您将获得以下阵列[array_count_values()](http://www.php.net/manual/en/function.array-count-values.php ) – 2014-10-07 11:46:57
array_count_values()函数计算数组的所有值。我只想看看数组中是否有重复值。 – 2014-10-07 11:48:19
RTFM:array_count_values()使用数组的值作为键__和它们的频率___作为值返回 – 2014-10-07 11:50:09