Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 25.12.2017, 11:41   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 375
Репутация: 15
Счастье Notice: Uninitialized string offset: 0 Как исправить?

Здравствуйте!
Подскажите пожалуйста, почему возникает эта ошибка?:

Notice: Uninitialized string offset: 0 in C:\Programming\xampp\htdocs\shop\ad min\search_clients.php on line 45

PHP код:
 $search clear_string($_GET["q"]);
     
$search_phone $search;
           if (
$search_phone{0} != '+' OR $search_phone{1} != '7')// строка - 45
              
{    
                    ...
              }                            
              } 
Женя32 вне форума   Ответить с цитированием
Старый 25.12.2017, 12:27   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,347
Репутация: 5274
По умолчанию

ну, если проверяете первый и второй символ строки, так проверьте сначала, что длина строки больше или равна двум.
Иначе Вы обращаетесь к символам, которых в строке нет.

получить вашу ошибку можно так:
Код:

<?php
echo "проверка new<br>\n";

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

$search_phone = ""; 
echo $search_phone{0}; // тут будет ошибка - т.к. идёт обращение к несуществующему элементу строки
echo "<br><hr>";
?>


Последний раз редактировалось Serge_Bliznykov; 25.12.2017 в 12:31.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 25.12.2017, 14:46   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 375
Репутация: 15
По умолчанию

Спасибо!
Женя32 вне форума   Ответить с цитированием
Старый 26.12.2017, 10:37   #4
olegK<<
Форумчанин
 
Аватар для olegK<<
 
Регистрация: 05.11.2017
Адрес: Кропивницкий
Сообщений: 60
Репутация: 10

icq: 491861664
skype: wheeldraff
По умолчанию

Цитата:
Сообщение от Женя32 Посмотреть сообщение
$search = clear_string($_GET["q"]);
$search_phone = $search;
Проверяйте переменную перед манипуляции
Код:

if(isset($search))  $search_phone = $search;

olegK<< вне форума   Ответить с цитированием
Старый 26.12.2017, 11:46   #5
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,347
Репутация: 5274
По умолчанию

Цитата:
Сообщение от olegK<< Посмотреть сообщение
Проверяйте переменную перед манипуляции
проверять переменную на наличие - это правильно.
вот только в данном случае ваш совет бесполезен.

проверьте:
Код:

$search = ""; 
if(isset($search))
  echo "переменная есть";
else
  echo "переменной нет";

ну, или полностью:
Код:

<?php

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);


$search = ""; 
if(isset($search)){
  echo "переменная есть";
  $search_phone = $search;
  echo $search_phone{0};
}
else
  echo "переменной нет";

?>

я же написал выше, нужно проверять, что в строке есть символы, к которым прописано обращение в коде.
для этого в данном случае надо проверить длину строки.

p.s. впрочем, я оставляю без комментариев подобный ужасный способ проверить, что строка не начинается с +7....
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 26.12.2017, 12:11   #6
olegK<<
Форумчанин
 
Аватар для olegK<<
 
Регистрация: 05.11.2017
Адрес: Кропивницкий
Сообщений: 60
Репутация: 10

icq: 491861664
skype: wheeldraff
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
проверять переменную на наличие - это правильно.
вот только в данном случае ваш совет бесполезен.
Согласен,но можно добавить и empty()
Код:

if(isset($search) && !empty($search))  $search_phone = $search;

olegK<< вне форума   Ответить с цитированием
Старый 26.12.2017, 12:23   #7
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,347
Репутация: 5274
По умолчанию

Цитата:
Сообщение от olegK<< Посмотреть сообщение
можно добавить и empty()
можно, согласен.
Serge_Bliznykov вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка:system formatexception: не удалось преобразовать значение параметра из string в dateTime что делать как исправить C# nifilim0609 C# (си шарп) 1 22.10.2017 15:22
Ошибка Notice: Undefined offset: 0 - PHP helken PHP 13 29.01.2017 23:59
Ошибка Notice: Undefined offset: 2 Ruska882009 Помощь студентам 1 18.11.2009 16:16
Warning: Narrowing given wide string constant lost information. Как исправить? SkAndrew Общие вопросы Delphi 4 18.08.2008 12:11
Как сделать OFFSET в RunTime Zhenyka Microsoft Office Excel 1 06.06.2008 16:19


16:29.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru