PHP找到相等的变量

时间:2012-06-26 01:26:02

标签: php arrays

有没有办法轻松检查多个变量的值是否相等?例如,在下面的代码中我有10个值,使用等号检查它们是否全部相等是很麻烦的。

 <?
  foreach($this->layout as $l): 
  $long1=$l['long1_campaignid'];    
  $long2=$l['long2_campaignid']; 
  $long3=$l['long3_campaignid'];    
  $long4=$l['long4_campaignid']; 
  $long5=$l['long5_campaignid'];    
  $long6=$l['long6_campaignid'];    
  $long7=$l['long7_campaignid'];    
  $long8=$l['long8_campaignid'];    
  $long9=$l['long9_campaignid'];    
  $long10=$l['long10_campaignid'];
  endforeach;
 ?>
例如,

如果$ long1 = 3,$ long2 = 7,$ long3 = 3,$ long4 = 7,$ long5 = 3等,

我需要检索$ long1 = $ long3 = $ long5和$ long2 = $ long4

3 个答案:

答案 0 :(得分:1)

认为这就是你要找的东西:

<?
  foreach($this->layout as $l): 
  $m = array_unique($l);
  if (count($m) === 1) {
      echo 'All of the values are the same<br>';
  }
  endforeach;
?>

我假设您正在查看数组中的所有值是否相同。所以为了做到这一点,我调用array_unique()来删除数组中的重复项。如果数组的所有值都相同,那么将为我们提供一个元素的数组。所以我检查了这个,如果是,那么所有的值都是一样的。

答案 1 :(得分:1)

该问题的例子显示“分组”并非直接关于“找到相等的变量”。

我认为这个简单的“分组而不改变顺序”算法就是答案......使用sort()的其他算法也很容易用PHP实现。

<?
  foreach($this->layout as $l) {
     $m = array();
     foreach($1 as $k=>$v) // keys 'longX' and values
        if (array_key_exists($v,$m)) $m[$v][] = $k; 
        else                         $m[$v]   = array($k);
     foreach ($m as $val=>$keys)
        if (count($keys)>1) echo "<br/> have SAME values: ".join(',',$keys)
  }
?>

关于“找到相等的变量”

另一个(简单)代码,请参阅PHP man of array_unique上的示例#2。

<?
  $m = array_unique($this->layout);
  $n = count($m);
  if ($n == 1)
      echo 'All of the values are the exactly the same';
  elseif ($n>0)
      echo 'Different values';
  else 
      echo 'No values';
?>

“相等标准”可能需要对字符串进行一些过滤,规范化空格,低/大写等。只有使用这种“灵活相等”才能证明循环。例如:

<?
  $m = array();
  foreach($this->layout as $l) 
      $m[trim(strtolower($1))]=1;
  $n = count(array_keys($m));
  if ($n == 1)
      echo 'All of the values are the exactly the same';
  elseif ($n>0)
      echo 'Different values';
  else 
      echo 'No values';
?>

答案 2 :(得分:0)

如果@John Conde的答案不是你想要的,你想要检查集合中的一个或多个相同的值,你可以sort数组然后循环它,保持最后一个价值并将其与当前价值进行比较。