我正在写一个黑名单单词检查器。我将脚本命名为blacklist_check.php
,它看起来像这样:
<?php
$black_list = [
'ass',
'anus',
/* many others that i skipped here */
];
function is_black_listed ($word) {
return in_array($word, $black_list);
}
?>
但是,当我使用is_black_listed
函数时,我总是得到Warning: in_array() expects parameter 2 to be array, null given
。
我应该将$black_list
数组放在is_black_listed
函数中吗?我不想这样做,因为在我调用函数时总是会创建数组,而不是在我需要(或包含)脚本时只有一次!
我应该在global $black_list
函数中使用is_black_listed
吗?
帮助我解决这个问题的最佳做法!
答案 0 :(得分:3)
不要使用全局变量,它们很难维护并且使代码的可读性降低。相反,只需将数组传递给函数:
function is_black_listed ($word, $black_list)
然后用:
调用它is_black_listed( "bad words!", $black_list);
更好的是,创建一个类来执行此操作,并将数组创建为成员变量:
class WordFilter {
private $black_list = [ ... ];
function __construct( $words = array()) {
// Optionally add dynamic words to the list
foreach( $words as $word)
$black_list[] = $word;
}
function is_black_listed( $word) {
return in_array( $word, $this->black_list);
}
}
$filter = new WordFilter( array( 'potty', 'mouth'));
$filter->is_black_listed( "bad");