Чтобы полностью избавиться от использования глобалов в вашем коде, а также сделать его намного лучше в целом, вы можете сделать что-то вроде этого:
- прекратите использовать $ _POST, так как это суперглобальный. Когда для кода нужны значения из суперглобальных элементов, передайте их в качестве параметров
- не хранить значения в $ GLOBALS. Если вам нужно вернуть более одного значения, рассмотрите возможность возврата объекта или массива
Вот как я думаю, я бы изменил ваш код, чтобы улучшить его:
function CatchListings($listings) {
$filteredListings = array_map('mysql_real_escape_string', $listings);
//I assume you only need the values in the array in the original snippet,
//so we need to grab them from the parameter array and return only that
$requiredListings = array();
$requiredKeys = array('itemnum','msrp','edprice','itemtype','box','box2','box25','box3','box4','box5','box6','box7','itemcolor','link');
foreach($requiredKeys as $key) {
$requiredListings[$key] = $filteredListings[$key];
}
return $requiredListings;
}
Чтобы использовать эту функцию, вы просто делаете $result = CatchListings($_POST);
. Тот же результат, глобалы не используются.
Однако есть одна вещь, на которую следует обратить внимание. Возможно, это не лучшая форма, чтобы просто передать произвольно заполненный массив (например, $ _POST) в функцию и ожидать, что он будет содержать определенные ключи (то есть массив $ requiredKeys). Возможно, вы захотите либо добавить логику для проверки отсутствующих ключей, либо обработать массив записей перед его передачей.