将php数组中的所有值与其他值进行比较

时间:2012-02-28 13:56:44

标签: php arrays

我有一个php数组

如何比较此数组的所有值并根据自定义逻辑过滤掉值(可能是回调函数)。

基本上,我想将每个数组值与数组中的每个其他值进行比较,并根据一些自定义逻辑,保留值或将其从数组中删除

由于

3 个答案:

答案 0 :(得分:1)

可能你必须手动完成:

function your_callback($a, $b)
{
   return $a != $b;
}    
$array = array(/** Your array here... **/);
$n = count($array);
$filtered = array();
for($i = 0; $i < $n; $i++)
{
   $ok = true;
   for($j = 0; $j < $n; $j++)
   {
      if($j != $i && !your_callback($array[$i], $array[$j])
      {
         $ok = false;
         break;
      }
   }
   if($ok)
      array_push($filtered, $array[$i]);
}
unset($array);
$array = $filtered;

此示例将过滤数组的唯一值,例如;更改your_callback定义以实现其他逻辑。

答案 1 :(得分:0)

您可以调用array_map,将回调作为第一个参数传递,并将数组作为第二个和第三个参数传递两次。在回调函数中,循环遍历“second”数组并返回元素(如果需要)。

答案 2 :(得分:0)

如果您希望将一个数组的值与另一个数组的值按顺序进行比较,那么我的代码非常简单:检查一下它会像这样工作:

if(array-1的第1个值等于array-2的第1个值){$ res = $ res + 5}

if($_POST){
$res=0;
$r=$_POST['Radio1']; //array-1
$anr=$_POST['answer']; //array-2
$arr=count($r);

for($ac=0; $ac<$arr; $ac++){

if($r[$ac]==$anr[$ac]){
$res=$res+5;

}
}
echo $res;
}