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
Форумы портала PHP.SU :: Версия для печати :: fatal error при попытке unset из массива
Форумы портала PHP.SU » » Вопросы новичков » fatal error при попытке unset из массива

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

1. maxy666 - 28 Декабря, 2013 - 18:09:10 - перейти к сообщению
Требуется удалить данные, если они присутствуют в массива, удаляю с помощью unset.
Делаю с помощью кода(циклом так как элементов postschema_fees_selected может быть от 0 до 11):
PHP:
скопировать код в буфер обмена
  1. for($i=0;$i<=11;$i++)
  2.             {
  3.                 if($post["postschema_fees_selected[$i]"]!="on")
  4.                 {        
  5.                   if (!empty($post["postschema_fees_selected[$i]"]))
  6.                     {                    
  7.                         unset($post["postschema_fees_selected[$i]"]);
  8.                     }      
  9.                   if (!empty($post["postschema_fees_values[price1][$i]"]))
  10.                     {
  11.                         unset($post["postschema_fees_values[price1][$i]"]);
  12.                     }
  13.                    
  14.                   if (!empty($post["postschema_fees_values[price2][$i]"]))
  15.                     {
  16.                         unset($post["postschema_fees_values[price2][$i]"]);
  17.                     }
  18.                    
  19.                   if (!empty($post["postschema_fees_values[count][$i]"]))
  20.                     {
  21.                         unset($post["postschema_fees_values[count][$i]"]);
  22.                     }
  23.                  
  24.                
  25.                 }
  26.             }  
  27.            


Но почему то иногда появляется ошибка, которая просто останавливает скрипт:
Fatal error Cannot unset string offsets на строке где unset($post["postschema_fees_selected[$i]"]);

Возможно я не верно делаю проверку: if (!empty($post["postschema_fees_selected[$i]"]))

Подскажите пожалуйста как избежать этой фатальной ошибки. Может как по другом делать проверку if (!empty).
2. OrmaJever - 28 Декабря, 2013 - 18:18:25 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $post["postschema_fees_values[price1][$i]"]

Что вы хотели этим сказать?
3. maxy666 - 28 Декабря, 2013 - 18:42:18 - перейти к сообщению
Это часть кода выдернутого из скрипта который правит лоты на аукро. Скрипт на php с использования curl. Cуть скрипта в том что на ход задаем ему лот, и он править на нем цену или еще какие то параметры и сохраняется.

Сохраняется все ок, только сам иногда проставляет чекбосы стоиомсти доставки.

Посоветовали удалять из массива $post данные о доставки, функцией unset и выше описанным кодом.

[postschema_fees_selected[3]] => off [postschema_fees_values[price1][3]] => 0,00 [postschema_fees_values[price2][3]] => 0,00

[postschema_fees_selected[3]] - это сам пункт доставки(например номер 3 - это новая почта)
price1 - это стоимость доставки первой посылки
price2 - это стоимость доставки второй и следующих посылок.


Кодом $post["postschema_fees_selected[$i]"]!="on" проверяю включен ли этот вид доставки.
Иногда все удаляется нормально, но иногда unset выкидывает ошибку.
Посоветуйте как сделать какие то перепроверки перед unset что бы ошибки (фатальной) не выкидывало.

 

Powered by ExBB FM 1.0 RC1