我有一個PHP數組比較PHP數組的所有值與其他值
我如何比較這陣列的所有值,並篩選出基於自定義邏輯值(回調函數可能)。
從本質上講,我想每個數組值與陣列中的所有其他值進行比較,並根據一些自定義邏輯,要麼保留值或從陣列中刪除它
感謝
我有一個PHP數組比較PHP數組的所有值與其他值
我如何比較這陣列的所有值,並篩選出基於自定義邏輯值(回調函數可能)。
從本質上講,我想每個數組值與陣列中的所有其他值進行比較,並根據一些自定義邏輯,要麼保留值或從陣列中刪除它
感謝
也許你不得不手動操作:
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定義以實現其他邏輯。
您可以調用array_map,將您的回調作爲第一個參數傳遞,並將您的數組作爲第二個參數和第三個參數傳遞兩次。在回調函數中,如果需要,可以遍歷「second」數組並返回元素。
如果您正在尋找與流程的一個數組的值進行比較一個數組的值,那麼我的代碼是非常簡單的:看看這個它的工作是這樣的:
如果(陣列-1的第一個值等於陣列-2的第一值){$解析度= $ 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;
}
['array_filter'](http://php.net/manual/en/function.array-filter.php)想起來,或者只是遍歷數組。有什麼問題嗎? – 2012-02-28 13:59:30
嗨。 array_filter將回調應用於數組的每個元素。我正在尋找比較數組元素的東西。像usort()這給你2個參數,你決定如何排序將發生 – Thomas 2012-02-28 14:05:53
然後做一個嵌套的'for'循環。 – 2012-02-28 14:07:07