3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果您試圖只保留一個(gè)值總和相同的條目,請(qǐng)嘗試以下操作:
$sums = array_map('array_sum', $allcard);
$uniq = array_unique($sums);
$result = array_diff_key($allcard, $uniq);
對(duì)每個(gè)數(shù)組中的數(shù)字求和
僅獲取唯一的總和值
計(jì)算密鑰的差異以?xún)H獲取唯一的密鑰
單線(xiàn):
$result = array_diff_key($allcard, array_unique(array_map('array_sum', $allcard)));
這將適用于數(shù)值或類(lèi)似的數(shù)值50 $將被轉(zhuǎn)換為正確的數(shù)值。它不適用于$50將被強(qiáng)制轉(zhuǎn)換為0.
由于您可能擁有 ( 50and 40) 和 ( 60and 30) 的總和相同,因此這可能不是您想要的。這比較了實(shí)際值:
$sorted = array_map(function($v) { sort($v); return $v; }, $allcard);
$result = array_map('unserialize', array_unique(array_map('serialize', $sorted)));
對(duì)每個(gè)子數(shù)組進(jìn)行排序,使它們具有相同的序列化值
將每個(gè)子數(shù)組序列化為字符串并獲取唯一值
反序列化每個(gè)子數(shù)組
單線(xiàn):
$result = array_map('unserialize', array_unique(array_map('serialize', array_map(
function($v) {
sort($v); return $v;
}, $allcard))));

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
最終代碼是:
$sums = array_map ( 'array_sum' , $allcard );
$uniq = array_unique ( $sums );
$result = array_diff_key ( $allcard , $uniq );
foreach ($allcard as $key => $all) {
if ($all["Card_1"] == $all["Card_2"]) {
array_push ( $result , $all );
}
}

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
看起來(lái)您正在嘗試過(guò)濾掉不包含 40 或 50 作為其值的數(shù)組。
您可以使用array_filter來(lái)做到這一點(diǎn):
此函數(shù)將數(shù)組作為第一個(gè)參數(shù),將回調(diào)作為第二個(gè)參數(shù)。它將解析數(shù)組的每個(gè)元素,如果當(dāng)前元素通過(guò)回調(diào)中的條件,它將被推入一個(gè)新數(shù)組,該數(shù)組將由函數(shù)返回。
$array = [...]
$filteredArray = array_filter($array, function($item) {
// if the item passes this condition, it will in the filteredArray
return in_array($item['Card_1'], ['40 $', '50 $']) && in_array($item['Card_2'], ['40 $', '50 $'])
});
在這里我使用該功能in_array,因?yàn)槲也幌脒M(jìn)行 4 次檢查。您可以隨意更改條件,基本概念保持不變
PS此代碼未經(jīng)測(cè)試,請(qǐng)不要只是復(fù)制和粘貼它期望一切正常。嘗試了解我所做的并將此概念應(yīng)用于您的代碼。
- 3 回答
- 0 關(guān)注
- 172 瀏覽
添加回答
舉報(bào)