2012-02-28 3 views
0

У меня есть PHP массивСравнить все значения в массиве PHP с другими значениями

Как я могу сравнить все значения этого массива и отфильтровать значения, основанные на пользовательской логике (функция обратного вызова может быть).

По сути, я хочу, чтобы сравнить значения каждого массива с любым другим значением в массиве и на основе какой-то собственной логики, либо сохранить значение или удалить его из массива

Благодаря

+2

[ 'array_filter'] (http://php.net/manual/en/function.array-filter.php) приходит на ум или просто перебирает массив. С чем вы столкнулись? –

+0

Привет. array_filter применяет обратный вызов к каждому элементу массива. Я ищу что-то, что сравнивает элементы массива друг с другом. Что-то вроде usort(), которое дает вам 2 аргумента, и вы решаете, как будет происходить сортировка. – Thomas

+0

Затем выполните вложенный цикл 'for'. –

ответ

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 для реализации другой логики.

0

Вы можете вызвать array_map, передав ваш обратный вызов в качестве первого аргумента и передав ваш массив дважды, как второй и третий аргументы. В функции обратного вызова вы выполняете цикл «второй» и возвращаете элемент, если хотите.

0

Если вы хотите сравнить значения одного массива со значениями другого массива в последовательности, то мой код очень прост: проверить это будет работать так:

если (первое значение массива-1, равные 1 значения массива-2) {$ разреш = $ разреш + 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; 
} 
Смежные вопросы