Я пытаюсь удалить косые черты из магических кавычек из массива. Таким образом, у меня есть две функции: одна – удалить косые черты, а другая – установить переменную.
// Strip slashes from an array. function strip_magic_quotes($array) { if (get_magic_quotes_gpc()) { function stripslashes_array($array) { return is_array($array) ? array_map('stripslashes_array', $array) : stripslashes($array); } return stripslashes_array($array); } return $array; } function set_variable($array = array(),$key,$params = array()) { # If $params is not an array, let's make it array with one value of former $params. if(!is_array($params)) $params = array($params); if(!is_array($array)) parse_str($array, $array); # Strip slashes from the array if get_magic_quotes_gpc is on. $array = strip_magic_quotes($array); # This will return true or false. if(in_array('boolean', $params)) return isset($array[$key]) ? true : false; # This will regard '0' as a string. # Return value or 0 as a string. elseif(in_array('0', $params)) return isset($array[$key]) && ($array[$key] == '0') ? trim($array[$key]) : null; # Return null as string if 'null_to_string' is set. elseif(in_array('null_to_string', $params)) return isset($array[$key]) && !empty($array[$key]) ? trim($array[$key]) : 'null'; # Check if the key is an array. elseif(isset($array[$key]) && !empty($array[$key]) && is_array($array[$key])) return isset($array[$key]) && !empty($array[$key]) ? $array[$key] : null; # This will regard '0', empty space as falsey. # Return value or null. else return isset($array[$key]) && !empty($array[$key]) ? trim($array[$key]) : null; } $array = array( 'name'=>'Hello', 'type'=>'{"page":"page"}' ); # set the required array. $items_variable = array( 'name', 'type' ); # loop the array. foreach( $items_variable as $item_variable ) { # set the main variables. $$item_variable = set_variable($array,$item_variable); } print_r($type);
Я получаю эту ошибку на моем реальном сервере, который я не понимаю,
Неустранимая ошибка: не удается переопределить stripslashes_array () (ранее объявленный в json.php: 16) в json.php в строке 16
строка 16 относится к этой function stripslashes_array($array)
линии function stripslashes_array($array)
которая, похоже, не имеет никакой ошибки.
Любая идея, как это исправить?
Случается, что каждый раз, когда вы вызываете функцию strip_magic_quotes
PHP пытается объявить функцию stripslashes_array
.
Почему вы думаете, что хотите вложить эту функцию? Если вы действительно хотите сделать это таким образом (чего не следует), вы можете изменить его на:
if (get_magic_quotes_gpc() && !function_exists('stripslashes_array')) {
Хотя это исправляет проблему, вы просто не должны этого делать, в первую очередь, потому что:
Или вы просто можете просто полностью отказаться от этой внутренней функции, если вам это не нужно в другом месте и просто позвольте коду работать во внешней функции.
По этой причине вложенные названные функции почти бесполезны.
Вы должны либо переместить вложенную функцию, либо выполнить явную проверку function_exists
.
Вы можете использовать анонимную функцию в PHP 5.3 или выше.