Автор Тема: проблема с обработкой массива  (Прочитано 5752 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Алексей

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 176
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проблема с обработкой массива
« : 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 
"<pre>";
print_r($_POST);
echo 
"\\n\\n======================\\n\\n";
clear_Post($_POST);
print_r($_POST);
echo 
"</pre>";
}
?>

<form action="" method="post">
	
<input type="text" value="       12" name="text">

	
<select name="sel[]" multiple>
	
	
<OPTION value="   1">1
	
	
<OPTION value="2">2
	
	
<OPTION value="   3   ">3
	
</select>
	


	
<textarea name="ta">       ddddddddd ddddddd [B]dd[/b]d     [b][/b]     </textarea>

	
<input type=submit>
</form>


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

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

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


т.е. массив $_POST[\'sel\'] не обрабатывается (пробелы не вырезались). где и что я путаю??

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
проблема с обработкой массива
« Ответ #1 : 19 Июля 2005, 19:00:48 »
имхо в строке :
    foreach($in as $key=>$value){ 
идет копирование объекта.
То есть ты меняешь значение $value, но не меняешь $in[$key]
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Алексей

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 176
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проблема с обработкой массива
« Ответ #2 : 19 Июля 2005, 19:41:29 »
хм.. как же это победить?

Оффлайн sarutobi

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 61
  • +0/-0
  • 0
    • Просмотр профиля
проблема с обработкой массива
« Ответ #3 : 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()

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проблема с обработкой массива
« Ответ #4 : 20 Июля 2005, 12:43:17 »
Цитировать
То есть ты меняешь значение $value, но не меняешь $in[$key]

неужели из этой фразы не ясно?

Оффлайн Алексей

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 176
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проблема с обработкой массива
« Ответ #5 : 20 Июля 2005, 12:45:36 »
Цитировать
RomikChef:
неужели из этой фразы не ясно?

ясно. не ясно как $in[$key] менять :)

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проблема с обработкой массива
« Ответ #6 : 20 Июля 2005, 13:11:44 »
тебе не кажется твой вопрос глупым?

Оффлайн Алексей

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 176
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проблема с обработкой массива
« Ответ #7 : 20 Июля 2005, 14:04:11 »
не знаю... чегой то я не пойму.
Ман: Обратите также внимание, что foreach работает с копией специфицированного массива, а не с самим массивом.
Тогда каким образом изменяются остальные переменные - text и ta?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проблема с обработкой массива
« Ответ #8 : 20 Июля 2005, 14:47:50 »
чувак.
при чём здесь маны, форичи, копии?

ты на свой вопрос посмотри.
"У меня есть переменная. Как мне поменять её значение?"
ты правда не умеешь этого?

Оффлайн Алексей

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 176
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проблема с обработкой массива
« Ответ #9 : 20 Июля 2005, 15:05:08 »
RomikChef
Я знаю как поменять значение переменной. Я не знаю как задачу эту решить.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
проблема с обработкой массива
« Ответ #10 : 20 Июля 2005, 15:29:46 »
НЕТУ никакой задачи.
задача тебе мерещится.
только потому, что ты меняешь ОДЕНУ переменную ВМЕСТО ДРУГОЙ.
Вот просто меняй правильную, о чём тебе ОТКРЫТЫМ ТЕКСТОМ написал Макс

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
проблема с обработкой массива
« Ответ #11 : 20 Июля 2005, 17:15:52 »
Алексей
твое $value - копия переменной $in[$key].
Меняй оригинал, не копию.
LJ: Backslashed life (rss)

Оффлайн Алексей

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 176
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
проблема с обработкой массива
« Ответ #12 : 02 Августа 2005, 19:17:47 »
Гы.. спасибо всем, до меня дошло:


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


:)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28