Forum Webscript.Ru

Программирование => PHP => Тема начата: Алексей от 19 Июля 2005, 16:08:48

Название: проблема с обработкой массива
Отправлено: Алексей от 19 Июля 2005, 16:08:48
Пишу функцию, которая должна очищать POST:


function clear_Post(&$in){
foreach($in as $key=>$value){
if(is_array($value)) clear_Post($value);
else {
$value = trim($value);
if(get_magic_quotes_gpc())
$value = stripslashes($value);
$in[$key] = $value;
}
}
}

if($_SERVER["REQUEST_METHOD"]=="POST"){
echo "
";
print_r($_POST);
echo "\\n\\n======================\\n\\n";
clear_Post($_POST);
print_r($_POST);
echo "
";
}
?>











 

только результат такой получается:

Array
(
    [text] => 12
    [sel] => Array
        (
            [0] =>    1
            [1] => 2
            [2] =>    3  
        )

    [ta] => ddddddddd ddddddd [B]dd[/b]d
)

т.е. массив $_POST[\'sel\'] не обрабатывается (пробелы не вырезались). где и что я путаю??
Название: проблема с обработкой массива
Отправлено: Макс от 19 Июля 2005, 19:00:48
имхо в строке :
    foreach($in as $key=>$value){
идет копирование объекта.
То есть ты меняешь значение $value, но не меняешь $in[$key]
Название: проблема с обработкой массива
Отправлено: Алексей от 19 Июля 2005, 19:41:29
хм.. как же это победить?
Название: проблема с обработкой массива
Отправлено: sarutobi от 20 Июля 2005, 09:11:13
Алексей
Цитата из manuual:
Also note that foreach operates on a copy of the specified array and not the array itself
Попробуй воспользоваться функцией array_walk()
Название: проблема с обработкой массива
Отправлено: Меняздесьдавнонет от 20 Июля 2005, 12:43:17
Цитировать
То есть ты меняешь значение $value, но не меняешь $in[$key]

неужели из этой фразы не ясно?
Название: проблема с обработкой массива
Отправлено: Алексей от 20 Июля 2005, 12:45:36
Цитировать
RomikChef:
неужели из этой фразы не ясно?

ясно. не ясно как $in[$key] менять :)
Название: проблема с обработкой массива
Отправлено: Меняздесьдавнонет от 20 Июля 2005, 13:11:44
тебе не кажется твой вопрос глупым?
Название: проблема с обработкой массива
Отправлено: Алексей от 20 Июля 2005, 14:04:11
не знаю... чегой то я не пойму.
Ман: Обратите также внимание, что foreach работает с копией специфицированного массива, а не с самим массивом.
Тогда каким образом изменяются остальные переменные - text и ta?
Название: проблема с обработкой массива
Отправлено: Меняздесьдавнонет от 20 Июля 2005, 14:47:50
чувак.
при чём здесь маны, форичи, копии?

ты на свой вопрос посмотри.
"У меня есть переменная. Как мне поменять её значение?"
ты правда не умеешь этого?
Название: проблема с обработкой массива
Отправлено: Алексей от 20 Июля 2005, 15:05:08
RomikChef
Я знаю как поменять значение переменной. Я не знаю как задачу эту решить.
Название: проблема с обработкой массива
Отправлено: Меняздесьдавнонет от 20 Июля 2005, 15:29:46
НЕТУ никакой задачи.
задача тебе мерещится.
только потому, что ты меняешь ОДЕНУ переменную ВМЕСТО ДРУГОЙ.
Вот просто меняй правильную, о чём тебе ОТКРЫТЫМ ТЕКСТОМ написал Макс
Название: проблема с обработкой массива
Отправлено: CGVictor от 20 Июля 2005, 17:15:52
Алексей
твое $value - копия переменной $in[$key].
Меняй оригинал, не копию.
Название: проблема с обработкой массива
Отправлено: Алексей от 02 Августа 2005, 19:17:47
Гы.. спасибо всем, до меня дошло:


...
clear_Post($in[$key]);
...


:)