第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從數(shù)組php中刪除自定義對(duì)象

從數(shù)組php中刪除自定義對(duì)象

PHP
GCT1015 2022-07-16 11:18:59
我有一張帶禮品卡的桌子 1,2,3 .... 100 $ 禮品卡用戶(hù)電話(huà)我要 123$我根據(jù)他的要求告訴他,他必須使用哪張卡我有這個(gè)數(shù)組Array([0] => Array    (        [Card_1] => 20 $        [Card_2] => 50 $    )[1] => Array    (        [Card_1] => 50 $        [Card_2] => 20 $    )[2] => Array    (        [Card_1] => 40 $        [Card_2] => 50 $    )[3] => Array    (        [Card_1] => 50 $        [Card_2] => 40 $    ))我有這個(gè)功能function DeleteDup ($allcard){    foreach ($allcard as $key => $all) {        for ($i = 0; $i < count ($allcard); $i++) {            $new = array();            $new["Card_1"] = $allcard[$i]["Card_2"];            $new["Card_2"] = $all["Card_1"];            if($new == $all){                unset($allcard[$key]);            }        }    }    return $allcard;}我想保留這兩個(gè)項(xiàng)目之一[2] => Array    (        [Card_1] => 40 $        [Card_2] => 50 $    )[3] => Array    (        [Card_1] => 50 $        [Card_2] => 40 $    )并刪除其中一個(gè)請(qǐng)幫我我測(cè)試了一切這是兩個(gè)不同的鍵,但在不同的位置相等
查看完整描述

3 回答

?
慕妹3242003

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))));


查看完整回答
反對(duì) 回復(fù) 2022-07-16
?
白衣染霜花

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 );

    }

}



查看完整回答
反對(duì) 回復(fù) 2022-07-16
?
蕪湖不蕪

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)用于您的代碼。


查看完整回答
反對(duì) 回復(fù) 2022-07-16
  • 3 回答
  • 0 關(guān)注
  • 172 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)