亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

比較并組合多維數組,然后按降序排序 PHP

比較并組合多維數組,然后按降序排序 PHP

PHP
慕桂英3389331 2023-08-19 10:28:17
我有 2 個多數組、配置文件和編碼數組,如下所示    $profiles = array(        array(            'user_id'      => 'fcc3d884-fbef-438a-9c86-0ad52c9b1223',            'first_name'   => 'Nar?ia',            'middle_name'  => '?',            'last_name'    => 'Cruz',            'ext'          => ''        ),        array(            'user_id'      => '0d31557d-1e9f-4db3-ac0d-72e1709fe89c',            'first_name'   => 'Randy',            'middle_name'  => 'O',            'last_name'    => 'Rocker',            'ext'          => ''        ),        array(            'user_id'      => '0f93f169-cf56-49df-a76b-7596446104c6',            'first_name'   => 'Qwerty',            'middle_name'  => 'K',            'last_name'    => 'Asdfg',            'ext'          => ''        ),        array(            'user_id'      => '23b1f4a2-034c-43b4-96b7-3191d78cead1',            'first_name'   => 'Johny',            'middle_name'  => 'L',            'last_name'    => 'Walker',            'ext'          => ''        )    );    $encoded = array(        array(            'encoder_id' => '0d31557d-1e9f-4db3-ac0d-72e1709fe89c',            'fullname'   => 'Randy O. Rocker',            'encoded'    => 10,        ),        array(            'encoder_id' => '23b1f4a2-034c-43b4-96b7-3191d78cead1',            'fullname'   => 'John L. Walker',            'encoded'    => 20,        )    );現在我想從 $profiles 獲取一些數據,然后在user_id和編碼器_id匹配時合并到 $encoded 數組,我有這段代碼,但它似乎錯誤,它只獲取“John L. Waler”數據。這是我的代碼。
查看完整描述

3 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

您可以通過使用;按值重新索引$encoded數組來使您的生活更輕松。那么您不必每次都搜索數組來查找值,您可以直接使用.?提取數據后,您可以使用按值排序:encoder_idarray_columnuser_idissetusortencoded


$encoded_ids = array_column($encoded, null, 'encoder_id');


$data = array();

foreach ($profiles as $profile) {

? ? $user_id = $profile['user_id'];

? ? if (isset($encoded_ids[$user_id])) {

? ? ? ? $data[] = array('id' => $user_id,

? ? ? ? ? ? ? ? ? ? ? ? 'fullname' => $encoded_ids[$user_id]['fullname'],

? ? ? ? ? ? ? ? ? ? ? ? 'encoded' => $encoded_ids[$user_id]['encoded']

? ? ? ? ? ? ? ? ? ? ? ? );

? ? }

? ? else {

? ? ? ? $data[] = array('id' => $user_id,

? ? ? ? ? ? ? ? ? ? ? ? 'fullname' => "${profile['first_name']} ${profile['middle_name']} ${profile['last_name']}",

? ? ? ? ? ? ? ? ? ? ? ? 'encoded' => 0

? ? ? ? ? ? ? ? ? ? ? ? );

? ? }

}


usort($data, function ($a, $b) { return $b['encoded'] - $a['encoded'];});

print_r($data);

輸出:


Array

(

? ? [0] => Array

? ? ? ? (

? ? ? ? ? ? [id] => 23b1f4a2-034c-43b4-96b7-3191d78cead1

? ? ? ? ? ? [fullname] => John L. Walker

? ? ? ? ? ? [encoded] => 20

? ? ? ? )? ??

? ? [1] => Array

? ? ? ? (

? ? ? ? ? ? [id] => 0d31557d-1e9f-4db3-ac0d-72e1709fe89c

? ? ? ? ? ? [fullname] => Randy O. Rocker

? ? ? ? ? ? [encoded] => 10

? ? ? ? )? ??

? ? [2] => Array

? ? ? ? (

? ? ? ? ? ? [id] => fcc3d884-fbef-438a-9c86-0ad52c9b1223

? ? ? ? ? ? [fullname] => Nar?ia ? Cruz

? ? ? ? ? ? [encoded] => 0

? ? ? ? )? ??

? ? [3] => Array

? ? ? ? (

? ? ? ? ? ? [id] => 0f93f169-cf56-49df-a76b-7596446104c6

? ? ? ? ? ? [fullname] => Qwerty K Asdfg

? ? ? ? ? ? [encoded] => 0

? ? ? ? )? ??

)

3v4l.org 上的演示


查看完整回答
反對 回復 2023-08-19
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

使用array_reduce

$encodedByEncoderId = array_column($encoded, null, 'encoder_id');


$combined = array_reduce($profiles, function (array $combined, array $profile) use ($encodedByEncoderId): array {

? $combined[] = [

? ? 'id' => $profile['user_id'],

? ? 'fullname' => $encodedByEncoderId[$profile['user_id']]['fullname']?

? ? ? ?? "{$profile['first_name']} {$profile['middle_name']}. {$profile['last_name']}",

? ? 'encoded' => $encodedByEncoderId[$profile['user_id']]['encoded']?

? ? ? ?? 0

? ];

? return $combined;

}, []);

演示: https:?//3v4l.org/kKBru



查看完整回答
反對 回復 2023-08-19
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

嘗試這個!


$data = [];

foreach ($profiles as $key => $val) {

    $user_id = $val['user_id'];

    $is_matched = 0;

    $encoded_data = [];


    foreach($encoded as $k => $v){

        if ($user_id == $v['encoder_id']) {

            $is_matched = 1;

            $encoded_data = $v;

        }

    }

    $ext_name = ($val['ext'] == '') ? '' : $val['ext'];

    $fullname = $val['first_name'].' '.substr($val['middle_name'], 0, 1).'. '.$val['last_name'].' '.$ext_name;

    $data[$key] = array(

        'id'       => ($is_matched == 1) ? $encoded_data['encoder_id'] : $user_id,

        'fullname' => ($is_matched == 1) ? $encoded_data['fullname'] : $fullname,

        'encoded'  => ($is_matched == 1) ? $encoded_data['encoded'] : 0

    );

}


查看完整回答
反對 回復 2023-08-19
  • 3 回答
  • 0 關注
  • 141 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號