Php 检查数组中的分解值是否与另一个分解值重复
你好,试着在数组中找到重复的值,我有这样的数组Php 检查数组中的分解值是否与另一个分解值重复,php,arrays,Php,Arrays,你好,试着在数组中找到重复的值,我有这样的数组 $array = array('1%2','3%4','1%2',1%3); 所以我想在%之后找到重复的2,所以我在foreach内部使用了explode foreach($array as $value){ $s = explode('%',$value); if($s[1] == $s[1]){ echo 'there are duplicated 2'; } } 所以我想检查数组中%之后的值是否重复 是否仍有这样
$array = array('1%2','3%4','1%2',1%3);
所以我想在%
之后找到重复的2
,所以我在foreach内部使用了explode
foreach($array as $value){
$s = explode('%',$value);
if($s[1] == $s[1]){
echo 'there are duplicated 2';
}
}
所以我想检查数组中%
之后的值是否重复
是否仍有这样做的方法在循环查看右侧值并检查重复项时,您需要收集右侧值。我通过字符串的“偏移量”
[2]
访问字符串的右侧值。找到后,您可以使用中断退出循环
代码:()
输出:
Element (index 2) containing 1%2 has duplicate right side value.
array (
0 => '1%2',
3 => '3%2',
4 => '5%2',
)
array (
0 => '21%2',
5 => '5%2',
)
array (
2 =>
array (
0 => '1%2',
1 => '3%2',
2 => '5%2',
),
3 =>
array (
0 => '1%3',
),
4 =>
array (
0 => '1%4',
),
)
// [right side values] => [counts]
array (
2 => 3,
3 => 1,
4 => 1,
)
如果要搜索以%2
结尾的所有元素,可以使用preg\u grep()
代码:
输出:
Element (index 2) containing 1%2 has duplicate right side value.
array (
0 => '1%2',
3 => '3%2',
4 => '5%2',
)
array (
0 => '21%2',
5 => '5%2',
)
array (
2 =>
array (
0 => '1%2',
1 => '3%2',
2 => '5%2',
),
3 =>
array (
0 => '1%3',
),
4 =>
array (
0 => '1%4',
),
)
// [right side values] => [counts]
array (
2 => 3,
3 => 1,
4 => 1,
)
如果没有regex,则需要更多的函数调用:
$search=2;
$array=['21%2','1%3','2%22','1%4','3%21','5%2'];
var_export(array_filter($array,function($v)use($search){return strpos($v,"%$search")+2===strlen($v);}));
输出:
Element (index 2) containing 1%2 has duplicate right side value.
array (
0 => '1%2',
3 => '3%2',
4 => '5%2',
)
array (
0 => '21%2',
5 => '5%2',
)
array (
2 =>
array (
0 => '1%2',
1 => '3%2',
2 => '5%2',
),
3 =>
array (
0 => '1%3',
),
4 =>
array (
0 => '1%4',
),
)
// [right side values] => [counts]
array (
2 => 3,
3 => 1,
4 => 1,
)
…[深呼吸]这是一个尝试性的答案#4
代码:
输出:
Element (index 2) containing 1%2 has duplicate right side value.
array (
0 => '1%2',
3 => '3%2',
4 => '5%2',
)
array (
0 => '21%2',
5 => '5%2',
)
array (
2 =>
array (
0 => '1%2',
1 => '3%2',
2 => '5%2',
),
3 =>
array (
0 => '1%3',
),
4 =>
array (
0 => '1%4',
),
)
// [right side values] => [counts]
array (
2 => 3,
3 => 1,
4 => 1,
)
如果要计算数组中的右侧值:
$array=['1%2','1%3','1%4','3%2','5%2'];
$array=preg_replace('/\d+%/','',$array); // strip the left-size and % from elements
var_export(array_count_values($array)); // count occurrences
输出:
Element (index 2) containing 1%2 has duplicate right side value.
array (
0 => '1%2',
3 => '3%2',
4 => '5%2',
)
array (
0 => '21%2',
5 => '5%2',
)
array (
2 =>
array (
0 => '1%2',
1 => '3%2',
2 => '5%2',
),
3 =>
array (
0 => '1%3',
),
4 =>
array (
0 => '1%4',
),
)
// [right side values] => [counts]
array (
2 => 3,
3 => 1,
4 => 1,
)
将分解的检查值存储在一个数组中,然后使用in_array
检查该数组的未来值。我不明白in_array函数如何帮助我显示重复的值?您好,谢谢,但是$v[2]返回1%2,但我需要搜索%之后的数字,并检查它是否重复让我们假设我的数组类似于$a=数组('1%2'、'1%3'、'1%4'、'3%2'、'5%2');我希望我的输出是,有3个重复的值1%2、3%2和5%2我已经在我的最新方法中添加了一个搜索变量。这就是你要找的吗?您好,谢谢,但2只是一个示例,我想检查%1之后的每个数字是否重复表示a=array('1%3','2%4','3%3','5%4','1%6','3%2'));我希望输出结果是数字3有两个重复值,数字4有两个重复值,这就是我想要的,%之后的值。它的自定义值用户可以添加任何数字。我想我以前从来没有遇到过这样的问题。请告诉我,在我的答案组中,您正在寻找解决方案。如果没有,请在您的问题上以编辑的形式发布相关输入和期望输出。此时,我不知道正确答案是什么(未来的读者也不知道)。请帮我们澄清您期望的输出是什么。