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

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

2D數組-按值搜索并返回數組的索引

2D數組-按值搜索并返回數組的索引

PHP
慕村9548890 2021-04-30 14:42:45
我有一個像protected $aPermissions = [    'read' => [        'show'    ],    'update' => [        'edit',        'editProfilePicture'    ]];我想通過可能在子數組中找到的值來獲取子數組的數組鍵(“讀取”,“更新”)。因此,搜索“ edit”將返回“ update”,而“ show”將返回“ read”。我嘗試了PHP的array_search函數(也是遞歸地循環執行),但沒有設法使它起作用。實現我想要的最佳方法是什么?
查看完整描述

3 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

一種選擇是array_filter用于循環遍歷數組,并且僅包括包含$search字符串的子數組。使用array_keys提取的關鍵。


$aPermissions = [

    'read' => [

        'show'

    ],

    'update' => [

        'edit',

        'editProfilePicture'

    ]

];


$search = 'edit';


$result = array_keys(array_filter($aPermissions, function( $o ) use ( $search ) {

    return in_array( $search, $o );

}));

$result 將導致:


Array

(

    [0] => update

)


查看完整回答
反對 回復 2021-05-21
?
慕無忌1623718

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

您可以使用array_walk和in_array獲取key,沒有返回類型數組,只是簡單的鍵名,否則為null


$aPermissions = [

 'read' => [

    'show'

 ],

 'update' => [

    'edit',

    'editProfilePicture'

 ]

];

$searchAction = 'show';

$keyFound = '';

array_walk($aPermissions, function($value, $key) use ($searchAction, &$keyFound){

  in_array($searchAction, $value) ?  ($keyFound = $key) : '';

}); 

echo $keyFound;

輸出


read


查看完整回答
反對 回復 2021-05-21
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

假設鍵在第一級,值在第二級,則可以執行以下操作:


$innerKeys = [

    "show",

    "edit"

];


$output = [];


foreach ($array as $key => $value) {

    if (is_array($value)) {

        foreach ($value as $innerKey => $innerValue) {

            if (isset($innerKeys[$innerKey])) $output[$innerKey] = $key;

        }

    }

}

如果您的問題更復雜,那么您將需要向我們提供其他信息。


查看完整回答
反對 回復 2021-05-21
  • 3 回答
  • 0 關注
  • 158 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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