php - 使用 count($array) 仅检索匹配的 $key
问题描述
我正在运行一个循环,$array
其中我只包含具有匹配用户角色(来自 Wordpress 用户)的结果。
我有循环:
// custom function that returns the user's role (administrator, reader, etc)
$userRole = get_current_user_role();
foreach( $location_array as $key => $location ) {
if( in_array( $userRole, $location['c'] ) ) {
// do the things
echo '<div style="width: calc( 100vw / ' . count($array) . ');">';
echo $location['a'];
echo '</div>';
}
}
$array
组成:
Array (
[1] => Array (
[a] => Location 1
[b] => loc04
[c] => Array ( [administrator] => administrator )
)
[2] => Array (
[a] => Location 2
[b] => loc23
[c] => Array ( [administrator] => administrator, [publisher] => publisher )
)
[3] => Array (
[a] => Location 3
[b] => loc12
[c] => Array ( [publisher] => publisher, [viewer] => viewer )
)
)
但是,当我尝试获取 的计数时$array
,它会返回所有 的数量$key
,我不知道如何将其缩小到仅来自in_array( $userRole, $location['c']
我尝试将in_array( $userRole, $location['c']
from 循环放入一个变量中,然后输出它,但除了返回值 1 之外,我没有任何成功,但管理员有两个匹配项
解决方案
您不能在正在进行的阵列上使用计数。你需要先过滤它!
您可以将数组过滤器用作:
$arr = [["b" => "loc04", "c" => ["administrator" => "administrator"]]];
$arr[] = ["b" => "loc23", "c" => ["administrator" => "administrator", "publisher" => "publisher"]];
$arr[] = ["b" => "loc12", "c" => ["publisher" => "publisher", "viewer" => "viewer"]];
$role = "administrator";
$a = array_filter($arr, function ($e) use ($role) {return in_array($role, $e["c"]);});
现在$a
将包含 2 元素。
如果键与您最好使用的值相同isset
(更快 - O(1) 而不是 O(n)):
$a = array_filter($arr, function ($e) use ($role) {return isset($e["c"][$role]);});
然后你可以循环$a
并做:
foreach($a as $location) {
echo '<div style="width: calc( 100vw / ' . count($a) . ');">';
echo $location['a'];
echo '</div>';
}
现场示例:3v4l
推荐阅读
- android - Facebook login - LoginManager.getInstance().logInWithReadPermissions never trigger callback
- c# - Databind for Gridview is very slow
- android - AndroidX 导致 AppCompatActivity 崩溃
- asp.net-core - how to change session id during login in asp.net core
- java - Spring boot Application Startup failed: nested exception is java.lang.IllegalStateException: Cannot load keystore
- javascript - 如何使用 JavaScript 检测暗模式?
- python - Selenium Python - 等待元素加载并单击它
- ios - 如何使第一行具有特定的名称和图像?
- python - 每次将数据保存在 django slug 中时不受控制的修改问题
- python - Python Stopped Working While Training Data