0

我正在写一个黑名单单词检查器。我将脚本命名为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

帮助我解决这个问题的最佳实践!

4

1 回答 1

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");
于 2012-06-16T00:19:24.250 回答