Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Переменная $_post

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Не могу разобраться
Russer
Отправлено: 14 Марта, 2015 - 17:04:29
Post Id


Гость


Покинул форум
Сообщений всего: 91
Дата рег-ции: Февр. 2015  


Помог: 1 раз(а)




Не работает переприсвоение $_POST с обычными переменными такое проходит но с $_POST переменная не выводиться , то есть он ее не находит.


Может , кто другой способ знает , задача в следующем , есть несколько полей input c названиями name="col1" "col2" "colN" Нужно их перебрать и ,если значение не пустое отправить его в массив.

Идея была в следующем:
PHP:
скопировать код в буфер обмена
  1.  
  2. //создаем цикл от 1 до N
  3. for (i=1; i<=n ;i++;) {
  4. // Присваиваем переменной имя нужного элемента;
  5. $name = "_POST[col{$i}]";
  6. //Ссылаемся на переменную и проверяем существует ли она
  7. if (isset($$name)) {
  8. //Записываем в массив
  9. $array[] = $$name ;
  10. }
  11. }
  12.  


P.S. Каждый $_POST переписывать в ручную очень не охота.
 
 Top
Zveryugaz
Отправлено: 14 Марта, 2015 - 17:31:39
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $_POST['col1'] = 'данные';
  3. $_POST['col2'] = 'данные';
  4. $_POST['col3'] = '';
  5. $_POST['col4'] = 'данные';
  6. $_POST['col5'] = 'данные';
  7.  
  8. $MyPOST=array();
  9. foreach($_POST as $key => $value){
  10.         if($value != ''){
  11.              //Тут доп проверки по необходимости
  12.              $MyPOST[$key] = $value;
  13.         }
  14. }
  15.  
  16. echo '<pre>';
  17.         print_r($MyPOST);
  18. echo '</pre>';
  19.  


как-то так
(Добавление)
Результат:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [col1] => данные
  5.     [col2] => данные
  6.     [col4] => данные
  7.     [col5] => данные
  8. )
  9.  

(Отредактировано автором: 14 Марта, 2015 - 17:32:53)

 
 Top
Мелкий Супермодератор
Отправлено: 14 Марта, 2015 - 17:53:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Russer пишет:
есть несколько полей input c названиями name="col1" "col2" "colN" Нужно их перебрать и ,если значение не пустое отправить его в массив.

CODE (html):
скопировать код в буфер обмена
  1. <input type="text" name="col[]">
  2. <input type="text" name="col[]">
  3. <input type="text" name="col[]">

PHP:
скопировать код в буфер обмена
  1. $aTargetArray = array_filter($_POST['col']);
  2. var_dump($aTargetArray);

(Добавление)
А синтаксис $$str не используйте никогда. Это практически невозможно отлаживать и сопровождать.


-----
PostgreSQL DBA
 
 Top
Russer
Отправлено: 14 Марта, 2015 - 17:58:46
Post Id


Гость


Покинул форум
Сообщений всего: 91
Дата рег-ции: Февр. 2015  


Помог: 1 раз(а)




Zveryugaz пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. $_POST['col1'] = 'данные';
  3. $_POST['col2'] = 'данные';
  4. $_POST['col3'] = '';
  5. $_POST['col4'] = 'данные';
  6. $_POST['col5'] = 'данные';
  7.  
  8. $MyPOST=array();
  9. foreach($_POST as $key => $value){
  10.         if($value != ''){
  11.              //Тут доп проверки по необходимости
  12.              $MyPOST[$key] = $value;
  13.         }
  14. }
  15.  
  16. echo '<pre>';
  17.         print_r($MyPOST);
  18. echo '</pre>';
  19.  


как-то так
(Добавление)
Результат:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [col1] => данные
  5.     [col2] => данные
  6.     [col4] => данные
  7.     [col5] => данные
  8. )
  9.  

Спасибо но это не совсем подходит , так мне нужно , чтобы новый массив имел индексы по порядку .
 
 Top
Zveryugaz
Отправлено: 14 Марта, 2015 - 18:01:49
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Russer пишет:
Спасибо но это не совсем подходит , так мне нужно , чтобы новый массив имел индексы по порядку .

а они не по порядку?
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. $MyPOST=array();
  3. foreach($_POST as $key => $value){
  4.         if($value != ''){
  5.              //Тут доп проверки по необходимости
  6.              $MyPOST[] = $value;
  7.         }
  8. }
  9.  

Можно и так
Результат:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [0] => данные
  5.     [1] => данные
  6.     [2] => данные
  7.     [3] => данные
  8. )
  9.  
 
 Top
Russer
Отправлено: 14 Марта, 2015 - 18:13:42
Post Id


Гость


Покинул форум
Сообщений всего: 91
Дата рег-ции: Февр. 2015  


Помог: 1 раз(а)




Zveryugaz пишет:


PHP:
скопировать код в буфер обмена
  1.  
  2. $MyPOST=array();
  3. foreach($_POST as $key => $value){
  4.         if($value != ''){
  5.              //Тут доп проверки по необходимости
  6.              $MyPOST[] = $value;
  7.         }
  8. }
  9.  


CODE (html):
скопировать код в буфер обмена
  1.  
  2. Array
  3. (
  4.     [0] => данные
  5.     [1] => данные
  6.     [2] => данные
  7.     [3] => данные
  8. )
  9.  


Спасибо большое , это то же то что нужно! Сам не догадался убрать параметр $key , не внимательный я(
(Добавление)
Мелкий пишет:

PHP:
скопировать код в буфер обмена
  1. $aTargetArray = array_filter($_POST['col']);
  2. var_dump($aTargetArray);


Спасибо огромное! Оказывается все мои действия можно заменить одной строчкой )

(Отредактировано автором: 14 Марта, 2015 - 18:25:29)

 
 Top
Zveryugaz
Отправлено: 14 Марта, 2015 - 18:29:49
Post Id



Гость


Покинул форум
Сообщений всего: 68
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Russer пишет:
Мелкий пишет:

PHP:
скопировать код в буфер обмена

$aTargetArray = array_filter($_POST['col']);
var_dump($aTargetArray);



Спасибо огромное! Оказывается все мои действия можно заменить одной строчкой )


С Гуру спорить не буду!
Я просто предложил свой вариант )
 
 Top
DelphinPRO
Отправлено: 14 Марта, 2015 - 18:34:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Russer пишет:
Спасибо но это не совсем подходит , так мне нужно , чтобы новый массив имел индексы по порядку .

Тут тоже нет проблемы. Дополню код Мелкого



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB