各位PHP的高手大大們
目前在寫PHP後台程式時候遇到一個問題
請各位高手幫忙解惑。
我現在有兩個陣列
$admin 紀錄使用者的所有權 共有三筆資料 1.2.3
=Array ( [0] => 1 [1] => 2 [2] => 3 )
$listCheck 紀錄功能列表的編號跟名稱,共有五筆資料 1.2.3.4.5
=Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5)
我希望將listcheck的資料比對所有權的資料,確認這五個功能是否這個所有權的用戶有權限,
印出結果為表單的checkbox按鈕
$listCheck 功能權限
1 Yes
2 Yes
3 Yes
4 No
5 No
然後我寫foreach去搜尋兩個陣列得值在作比較時候會發生顯示的資料是15筆,
因為雙迴圈5*3=15 印出的是15筆資料,但我希望印出的結果是只有五筆,
且這五筆資料會顯示0.1 是否有權限。
foreach($listCheck as $listCheckKey)
{
forach($admin as $adminKey)
{
if($listCheckKey==$adminKey)
{
echo "此功能有權限";
}
else
{
echo "此功能沒有權限";
}
}
}
請問這樣的情況下要怎麼寫判斷會比較好呢?
<?php
$admin = [1, 2, 3];
$listCheck = [1, 2, 3, 4, 5];
foreach ($listCheck as $index => $permission) {
if (in_array($permission, $admin)) {
echo "[$index] $permission has permission\n";
} else {
echo "[$index] $permission has no permission\n";
}
}
輸出
[0] 1 has permission
[1] 2 has permission
[2] 3 has permission
[3] 4 has no permission
[4] 5 has no permission
$result = array_map(function($e){return in_array($e, $GLOBALS['admin']);}, $listCheck);
一行解決。$result 就是你要的陣列