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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP 遍歷2個數(shù)組問題求指教,用B的值去填充A的值;

PHP 遍歷2個數(shù)組問題求指教,用B的值去填充A的值;

PHP
BIG陽 2019-03-16 04:51:19
數(shù)組A: $a = [ 0 => ['num' => 100], 1 => ['num' => 105], 3 => ['num' => 253], N....... ] 數(shù)組B: $b = [ 0 => [ 'id' => 1, 'num' => 300 ], 1 => [ 'id' => 2, 'num' => 600 ], 2 => [ 'id' => 3, 'num' => 900 ], N........ ] 疑問:我想要遍歷出數(shù)組A里面num小于500的記錄,然后用數(shù)組B里面的num去填充它,如果數(shù)組A里面的num已經(jīng)等于500就跳過,最后還要有個數(shù)組來記錄數(shù)組B中,那些ID參與了填充····,求指教下代碼如何提現(xiàn)...貌似要遞歸?
查看完整描述

4 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗 獲得超3個贊

偽代碼如下

// b 的索引
$index = 0
// b 參與填寫 的數(shù)組
$contains = []
// for 循環(huán) a
for ():
    if (a [i]>= 500) 
        continue
    else 
        a[i].num  = b[$index].num
        $contains.push(b[$index].id)
        $index++

不好意思,php 學(xué)過 但是忘記了,如果 b 可以隨便填充a, 這樣處理 就可以了
如果b 也要 大于 500 才能填充的話,你 直接 把 b 小于 500給處理掉就可以了

查看完整回答
反對 回復(fù) 2019-03-18
?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗 獲得超7個贊

我也說個思路:

  1. array_filter把數(shù)組a里條件符合的篩出來
  2. 第一次array_replace,用數(shù)組b替換掉 [1] 里篩出來的值
  3. 第二次array_replace,用 [2] 替換掉數(shù)組a里的值
  4. 跑循環(huán),用array_key_exists判斷數(shù)組a里的每個數(shù)組元素是否存在名為'id'的key,如果存在就整條push到一個新數(shù)組里然后unset

可能不太優(yōu)雅……就是多一種角度吧。

查看完整回答
反對 回復(fù) 2019-03-18
?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗 獲得超7個贊

下面是按$a中的key$b中的id

<?php

$a = [
    0 => ['num' => 100],
    1 => ['num' => 105],
    3 => ['num' => 253],
];

$b = [
    0 => [
        'id' => 1,
        'num' => 300
    ],
    1 => [
        'id' => 2,
        'num' => 600
    ],
    2 => [
        'id' => 3,
        'num' => 900
    ],
];

$tmp = array_combine(array_column($b,'id'),array_column($b,'num'));
$ids = [];

array_walk($a, function(&$val,$key) use($tmp,&$ids){
    if($val['num'] < 500 && isset($tmp[$key])){
        $val['num'] = $tmp[$key];
        $ids[]      = $key;
    }
});

var_dump($a);
var_dump($ids);
查看完整回答
反對 回復(fù) 2019-03-18
?
守著星空守著你

TA貢獻(xiàn)1799條經(jīng)驗 獲得超8個贊

 $a = collect($a)->map(function($a1, $key) use($b){
        if($a1['num'] < 500){
            $b1 = collect($b)->reject(function($b1) use($key){
               return $b1['id'] != $key;
            });
            $b1 = $b1->flatMap(function($xx){
                return $xx;
            });

            if (!empty($b1->toArray())){
                $a1['num'] = $b1['num'];
                $a1['index'] = $b1['id'];
                return $a1;
            }  
        }
    })->filter(function($v){
        return !empty($v);
    });

    dd($a);
查看完整回答
反對 回復(fù) 2019-03-18
  • 4 回答
  • 0 關(guān)注
  • 603 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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