首页 > 解决方案 > 如何用 PHP 中的 isset 重写我的 in_array?

问题描述

我有这个代码:

return in_array( get_theme_mod( 'header_style' ), ['style-1','style-2','style-3','style-4', 'style-6'] );

哪个应该返回header_style(可能是style-1, style-2, etc.)是否准确地在该列表中。

简单来说,就是:

in_array( 'style-1', ['style-1','style-2','style-3','style-4', 'style-6'] );

我怎么能用 isset 重写这个?

标签: phpoptimization

解决方案


isset检查是否设置了键的值,因此您需要重建第二个数组(仅作为示例):

// `style-` become keys
['style-1' => true, 'style-2' => true, 'style-3' => true, 'style-4' => true, 'style-6' => true];

现在,您可以使用isset

$allowed_styles = ['style-1' => true, 'style-2' => true, 'style-3' => true, 'style-4' => true, 'style-6' => true];
// option is:
// $allowed_styles = array_fill_keys(['style-1', 'style-2'], true);

return isset($allowed_styles[get_theme_mod( 'header_style' )]);

推荐阅读