Intereting Posts
проблемы с laravel с мутаторами Элементы анализа из href-тегов Как создать события allday с помощью API календаря Google с официальной библиотекой PHP? Форма контакта 7: использовать крючок, созданный с использованием wpcf7_before_send_mail только для одной формы контакта по идентификатору Проблема с каталогическим обратным следом с HTML Как удалить несколько экземпляров и просто иметь один экземпляр, а несколько вызовов функций в php? UPDATE сводная таблица для DB Пространства имен PHP – поднимайтесь на уровень? Как я могу получить IP-адрес пользователя в PHP? Как сделать глобальные вспомогательные функции в laravel 5? Apache: как добавить заголовки Expires в файлы без установленных mod_expires Как передать аргументы от маршрутизатора к промежуточному программному обеспечению в laravel 5? Проверка ссылок с помощью Multi-Curl PHP sql statement, где предложение для нескольких значений массива PHP: проверить строку для определенных слов

Недопустимое смещение строки 'option 1'

Вот мой первоначальный код:

$camp_price=array( 'option 1' => array( 'id' => 'June 30 to July 20', 'weeks' => 3, 'week_price' => 995), 'option 2' => array( 'id' => 'June 30 to July 13', 'weeks'=> 2, 'week_price' => 995) ); foreach ($camp_price as $name=>$values) { $total_cost[$name]=$values['weeks'] * $values['week_price']; } 

Вот код HTML. Он отлично передает значение $ total_cost, пока форма не будет отправлена. Затем он показывает ошибку:

Предупреждение: недопустимое смещение строки «вариант 1»

Который я не понимаю:

  <select name="preferred_session"> <option value="option 1" <?php if($preferred_session =='option 1') echo'selected="selected"'; ?>> <?php echo $camp_price['option 1']['id'],': ', $total_cost['option 1']; ?>euros </option> <option value="2" <?php if($preferred_session =='option 2') echo 'selected="selected"'; ?>> <?php echo $camp_price['option 2']['id'],': ', $total_cost['option 2']; ?>euros </option> </select> 

Solutions Collecting From Web of "Недопустимое смещение строки 'option 1'"

Похоже, когда код запускает ошибку, либо $camp_price либо $total_cost не является массивом, а строкой.

Вы можете распечатать значения этих переменных непосредственно перед точкой, в которой произошла ошибка, и искать любые места, где вы, возможно, их непреднамеренно изменили.

Предупреждение: недопустимое смещение строки «вариант 1»

Эта ошибка означает, что вы используете сдвиг строки (здесь: 'option 1' ), который является незаконным. Смещения строк должны быть положительным числом, а не строкой.

Это чаще всего происходит при доступе к строковой переменной, но вы думаете, что это массив: ( Demo )

 <?php $total_cost = 'string value'; echo $total_cost['option 1']; 

Дает ошибку (и выводит):

 Warning: Illegal string offset 'option 1' in /demo.php on line 5 s 

s в конце – $total_cost[0] потому что незаконное смещение 'option 1' используется как 0 . Следуя правилам доступа к файлам подстроки PHP , это первый символ:

 string value s ^---- character 0: substr($total_cost, 0, 1); ^