İçeriğe geç

Verimsiz üyelik testi (ARCH7075)

Anahtar php.performance.inefficient-membership-test · Önem warning · Kategori performance

in_array() ile bir liste üzerinde, özellikle döngü içinde, üyelik kontrolü her seferinde O(n) tarar. Anahtarlı bir harita kullanarak isset() ile O(1) arama yapın.

<?php
$allowed = ['admin', 'editor', 'viewer'];
foreach ($users as $user) {
if (in_array($user->role, $allowed, true)) {
$granted[] = $user;
}
}
<?php
$allowed = ['admin' => true, 'editor' => true, 'viewer' => true];
foreach ($users as $user) {
if (isset($allowed[$user->role])) {
$granted[] = $user;
}
}

Tekrarlı üyelik kontrolleri için listeyi anahtarlı bir haritaya çevirip isset() ile sorgulayın.