次のようなコードのスニペットがあります。
if(array_key_exists('uid',$_SESSION)){
$userdata->readUser($_SESSION['uid']);
$ACL = new ACL($_SESSION['uid']);
$userPerms = $ACL->setACL();
if(!in_array_r("adminUI",$userPerms['perms'],true)){
echo "Couldnt fine adminUI in:";
var_dump($userPerms['perms']);
}
}
in_array_r 関数は次のとおりです。
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}
私が得たもの: in_array() と多次元配列
ただし、これの出力は次のとおりです。
Couldnt fine adminUI in:
array(2) {
[0]=>
array(1) {
["perm_desc"]=>
string(7) "adminUI"
}
[1]=>
array(1) {
["perm_desc"]=>
string(9) "apiAccess"
}
}
STRICTなしで配列をチェックするように関数を変更すると、針が見つかりますが、厳密なチェックでは失敗します...
私はこれを理解しようとして机に頭をぶつけています。
編集
Jan Schejbal は、このコードが完全に正常に動作することを指摘するほど素晴らしいものでした。作業ディレクトリを理解するのに十分な一貫性がありませんでした。Jan Schejbal さん、ありがとうございました。