Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2017, 10:41   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье 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, 11:27   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

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

получить вашу ошибку можно так:
Код:
<?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 в 11:31.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.12.2017, 13:46   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

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

Цитата:
Сообщение от Женя32 Посмотреть сообщение
$search = clear_string($_GET["q"]);
$search_phone = $search;
Проверяйте переменную перед манипуляции
Код:
if(isset($search))  $search_phone = $search;
olegK<< вне форума Ответить с цитированием
Старый 26.12.2017, 10:46   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от 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, 11:11   #6
olegK<<
Пользователь
 
Аватар для olegK<<
 
Регистрация: 05.11.2017
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
проверять переменную на наличие - это правильно.
вот только в данном случае ваш совет бесполезен.
Согласен,но можно добавить и empty()
Код:
if(isset($search) && !empty($search))  $search_phone = $search;
olegK<< вне форума Ответить с цитированием
Старый 26.12.2017, 11:23   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка:system formatexception: не удалось преобразовать значение параметра из string в dateTime что делать как исправить C# nifilim0609 C# (си шарп) 1 22.10.2017 14:22
Ошибка Notice: Undefined offset: 0 - PHP helken PHP 13 29.01.2017 22:59
Ошибка Notice: Undefined offset: 2 Ruska882009 Помощь студентам 1 18.11.2009 15: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