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

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

PHP:從字典列表中按鍵獲取值列表

PHP:從字典列表中按鍵獲取值列表

PHP
慕斯709654 2023-09-22 16:17:25
Array (     [0] => Array (      [id] => 1       [user_id] => 15      [booked] => 2020-08-01      [sendin] => 2020-08-03      [pickup] => 2020-08-08      [duration] => 5     )    [1] => Array (      [id] => 2      [user_id] => 15      [booked] => 2020-08-01      [sendin] => 2020-08-03      [pickup] => 2020-08-08      [duration] => 5     )  )獲取 id,傳入user_id = 15,我想要$ids = array(1, 2)有沒有一個速記方法,或者我必須編寫一個函數?感謝你的幫助。
查看完整描述

2 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

您可以使用array_filter查找所有具有 的子數組user_id == 15,然后array_map提取相應的id值:

$user_id = 15;

$ids = array_map(function ($a) { return $a['id']; },

? ? ? ? ? ? ? ? ?array_filter($array,?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? function ($a) use ($user_id) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return $a['user_id'] == $user_id;?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? })

? ? ? ? ? ? ? ? ?);

print_r($ids);

或者,您可以使用array_keys搜索user_id值的鍵(由 提取array_column),即 15 并使用這些鍵來array_map檢索id值:

$ids?=?array_map(function?($k)?use?($array)?{?return?$array[$k]['id'];?},
?????????????????array_keys(array_column($array,?'user_id'),?$user_id)
?????????????????);print_r($ids);

在這兩種情況下,輸出(對于您的示例數據)為:

Array

(

? ? [0] => 1

? ? [1] => 2

)

3v4l.org 上的演示


查看完整回答
反對 回復 2023-09-22
?
Helenr

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

只是想添加一個替代答案。盡管這些array_方法很方便,但它們也有缺點。在另一個答案中,第一個方法將處理數組兩次(一次用于array_filter()和 結果array_map()),第二個方法將執行 3 次。這看起來很方便,但我的替代方案使用一個簡單的foreach()循環。它使 1 次遍歷數組并僅檢查 user_id 并將其添加到列表中(如果匹配)...


$ids = [];

foreach ( $array as $user ) {

    if ( $user['user_id'] == $user_id ) {

        $ids[] = $user['id'];

    }

}

print_r($ids);

這使...


Array

(

    [0] => 1

    [1] => 2

)


查看完整回答
反對 回復 2023-09-22
  • 2 回答
  • 0 關注
  • 139 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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