Php 计数、高亮显示和打印两个阵列之间的副本
首次在stackoverflow上过帐 在打印主数组后,我已设法突出显示在第二个数组中找到的值,但我还想打印括号中同时出现重复的次数。我已经用尽了如何做最后一部分的想法,我陷入了多个循环和其他问题。我会把现在有用的东西贴在这里 守则:Php 计数、高亮显示和打印两个阵列之间的副本,php,arrays,Php,Arrays,首次在stackoverflow上过帐 在打印主数组后,我已设法突出显示在第二个数组中找到的值,但我还想打印括号中同时出现重复的次数。我已经用尽了如何做最后一部分的想法,我陷入了多个循环和其他问题。我会把现在有用的东西贴在这里 守则: $main = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ); $secondary = array( 1, 6, 1
$main = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20 );
$secondary = array( 1, 6, 10, 6, 17, 6, 17, 20 );
foreach ( $main as $number )
{
if ( in_array( $number, $secondary ) )
{
echo $item;
// this one is supposed to be highlighted, but the html code disappears on stackoverflow
/* this is where the number of duplicates should appear in bracket, example:
highlighted number( number of duplicates ) */
}
else
{
echo $item;
// this one is simple
}
}
预期结果:
1(1)、2、3、4、5、6(3)、7、8、9、10(1)、11、12、13、14、15、16、17(2)、18、19、20(1)
基本上,括号包含在第二个数组中找到值的次数,除了颜色,但由于某种原因,我无法粘贴html代码。很抱歉,没有使预期结果更清楚
解决的问题:
感谢大家的帮助,第一次使用这个网站,没想到你们的反应这么快。多谢各位 假设$secondary是一个有重复项的,您应该用另一种方式:
$dupes = array();
foreach($secondary as $number) {
if (in_array($number, $main)) {
$dupes[$number]++;
}
}
var_dump($dupes);
您需要首先使用获取
辅助
数组的计数值。这是你可以作为一名教师获得的
$main = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20);
$secondary = array(1, 6, 10, 6, 17, 6, 17, 20);
$count_values = array_count_values($secondary);
foreach ($main as $key => $value) {
if (in_array($value, $secondary)) {
echo $value . "<strong>(" . $count_values[$value] . ")</strong>";
echo ( ++$key == count($main)) ? '' : ',';
} else {
echo $value;
echo ( ++$key == count($main)) ? '' : ',';
}
}
$main=array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);
$secondary=数组(1,6,10,6,17,6,17,20);
$count\u values=数组\u count\u values($secondary);
foreach($main作为$key=>$value){
if(在_数组中($value,$secondary)){
echo$value.“(“$count_values[$value])””;
echo(++$key==count($main))?“:”,”;
}否则{
echo美元价值;
echo(++$key==count($main))?“:”,”;
}
}
输出:
1(1)、2、3、4、5、6(3)、7、8、9、10(1)、11、12、13、14、15、16、17(2)、18、19、20(1)请发布您的预期结果。这不是我想要的,但谢谢您的帮助。我将以预期的结果编辑我的原始帖子。谢谢你的回答。它解决了我的问题。
<?php
$main = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12, 13, 14, 15, 16, 17,18,19,20);
$secondary = array( 1, 6, 10, 6, 17, 6, 17, 20 );
$result =array();
foreach($main as $key => $value){
$i=0;
foreach($secondary as $key1 => $value1){
if($value == $value1){
$i++;
}
$result[$value] = $i;
}
}
$resultString ='';
foreach($result as $key => $value){
$resultString .=$key.'('.$value.'),' ;
}
echo trim($resultString,',');
?>
1(1),2(0),3(0),4(0),5(0),6(3),7(0),8(0),9(0),10(1),11(0),12(0),13(0),14(0),15(0),16(0),17(2),18(0),19(0),20(1)