在循环内计算具有相同值的值

时间:2017-12-13 19:23:21

标签: php loops explode

我尝试在循环中计算元素,使用相同的值,就像我放入我的标题,现在我显示我的小脚本尝试这样做:

  $values="1,2,3~4,5,2~7,2,9";

脚本必须以这种方式显示数据:

1,2,3
7,2,9
**具有相同第二元素的第一个元素,其价值通常为第2个,因为它位于第二位**

第一:

4,5,2

其他人

;WITH cte ( userid, [day], activityid, [timestamp] ) AS (
    SELECT t.userid, [day] = CONVERT(NVARCHAR, t.timestamp, 101), t.activityid, MAX(t.timestamp)
      FROM MyTable t
     GROUP BY t.userid, CONVERT(NVARCHAR, t.timestamp, 101), t.activityid
)
SELECT *
  FROM cte
 WHERE cte.activityid = 2

我尝试在二分法之间验证第二个位置,因为它的值我想要内部循环计数的证书,而爆炸字符串,实际上给出错误的值,我认为它是坏的,因为没有得到真正的或正确的值,我不知道是否有可能这样做或与其他脚本或改变这个

的东西

感谢问候

1 个答案:

答案 0 :(得分:0)

编辑 - 这比你正在寻找的更接近(抱歉,这并不完美,因为我没有时间完全处理它):

$values="1,2,3~4,5,2~7,2,9";
$values=explode("~",$values);
foreach($values as $key => $expt) {
  $expit=explode(",",$expt);
  $search_value = $expit[1];
  $matched=array();
  foreach($values as $key2 => $expt2) {
    if($key !== $key2) {
      $expit2=explode(",",$expt2);
      if($expit[1]==$expit2[1]) {
        $matched[] = $expit[1];
      }
    }
  }
}
array_unique($matched);
foreach($matched as $match) {
  $counter = 0;
  $no_matches = array();
  echo "<br />Matching on digit ".$match;
  foreach($values as $key3 => $expt3) {
    $expit3=explode(",",$expt3);
    if($match == $expit3[1]) {
      echo "<br />".$expt3;
      $counter++;
    } else {
      $no_matches[] = $expt3;
    }
  }
  echo "<br />Total number of matches - ".$counter;
  echo "<br />Not matching on digit ".$match;
  foreach($no_matches as $no_match) {
    echo "<br />".$no_match;
  }
}

输出:

匹配数字2

1,2,3

7,2,9

比赛总数 - 2

数字2不匹配

4,5,2