0

以下代码的示例输出可能是这样的:

39 48 39 12 17 39 12

代码:

if (mysql_num_rows($filterResult)) {
while ($filterrow = mysql_fetch_array($filterResult)) {

$vidID = $filterrow['routineID'];
...
...
echo "<video id='video$vidID'></video>";
  }
}

我需要它像这样输出:

39 48 39_1 12 17 39_2 12_1

注意值 39 出现了 3 次,而值 12 出现了 2 次。在第一次出现值后,我需要将其格式化为##_#。

你能帮我编码一下吗?感谢您的时间和协助 - 德里克

4

4 回答 4

3

像这样使用 array_count_values:-

$array = array(1, 38, 1, 38,35);
print_r(array_count_values($array));

输出:-

Array
(
    [1] => 2
    [38] => 2
    [35] => 1
)

应用一些逻辑来实现你想要的。

于 2013-05-24T17:36:34.723 回答
2
if (mysql_num_rows($filterResult)) {
  $tmp = array();
  while ($filterrow = mysql_fetch_array($filterResult)) {

     $vidID = $filterrow['routineID'];

     if(isset($tmp[$vidID]) {
        $tmp[$vidID] = $tmp[$vidID] + 1;
        $vidID = $vidID . '_' . $tmp[$vidID];
     } else {
        $tmp[$vidID] = 0;
     }

     echo $vidID;
   }
 }
于 2013-05-24T22:01:47.083 回答
1
if (mysql_num_rows($filterResult)) {
while ($filterrow = mysql_fetch_array($filterResult)) {
$j=-1;
$vidID = $filterrow['routineID'];
$arr[]=$vidID;
for($i=0;$i<count($arr);$i++){
if($arr[$i]==$vidID)
$j++;
}
if($j==0)
$j="";
else $j="_".$j;
echo $vidID.$j;
 }
}
于 2013-05-24T17:59:14.243 回答
0

这是代码:

$array1 = array(39,48,39,12,17,39,12);
$array2 = array(39,48,39,12,17,39,12);

foreach($array1 as $value){

  $counts1 = array_count_values($array1);
  $counts2 = array_count_values($array2);

  if(!empty($counts2[$value])){

    if ($counts1[$value] > 1){

      $count = $counts1[$value] - $counts2[$value] + 1;

              if($count > 1) {

                 echo $value.'_'.($count - 1).' ';
              } else {

                 echo $value.' ';
              }
    } else {

      echo $value.' ';
    }
    array_shift($array2);
  }
}

这是PHP小提琴

于 2013-05-24T17:57:55.660 回答