Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 11.09.2018
Сообщений: 4

Php Fatal error Не могу понять, как исправить ошибку :(

11.09.2018, 10:39. Показов 1982. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста. Ошибку выдаёт строка с комментарием далее:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$cells = [['Cell 01','cell_01'],['Cell 02','cell_02'],['Cell 03','cell_03'],['Cell 04','cell_04'],['Cell 05','cell_05']];
foreach($cells as list($c_names,$c_numbers)) {
    $cells_numbers = "bscHOhc[".$c_numbers."]";
    $select_modules = select_module_for_cell($opthc,$c_numbers); // Fatal error: Uncaught Error: Call to undefined function select_module_for_cell()
    echo "<p>".$c_names."</p> $nbsp; <select class='' name='".$cells_numbers."'>".$select_modules."</select><br>";
}
function select_module_for_cell($opthc, $module) {
    $modules = get_modules_for_cell();
    foreach($modules as $m) {
        echo "<option value='".$m."'".selected($m, $opthc[$module]).">".$m."</option>";
    }
}
function get_modules_for_cell() {
    $modules = ['module-01','module-02','module-03','module-04','module-05'];
    return $modules;
}
?>
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.09.2018, 10:39
Ответы с готовыми решениями:

Не могу понять как исправить ошибку error C2065: j: необъявленный идентификатор
Здрасте, срочно нужна помощь, не могу понять в чем дело, выдает ошибку &quot;error C2065: j: необъявленный идентификатор 48 строка&quot;....

PHP Fatal error: Cannot redeclare ihc_init() Как исправить?
Появились ошибки на сайте. Понадобилось при регистрации на сайте загружать изображение, но при попытке загрузить получаю ошибку ERROR:...

Не могу понять как исправить ошибку Warning: printf() [function.printf]: Too few arguments in Z:\home\ksards.ru\www\id\1.php on line 76
Помогите связать бд с сайтом я новичок в этом вот код php &lt;?php do { printf(&quot;&lt;div class='blog'&gt;&lt;a...

6
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
11.09.2018, 10:51
Цитата Сообщение от luchezarniy Посмотреть сообщение
Call to undefined function select_module_for_cell()
Функция объявлена. Такой ошибки быть НЕ может. Есть ошибка:
Call to undefined function selected()
Версия PHP какая?
0
0 / 0 / 0
Регистрация: 11.09.2018
Сообщений: 4
11.09.2018, 11:05  [ТС]
PHP 7.0
Вот подробнее...
Есть вот такая конструкция:
HTML5
1
2
<select class="" name="bscHOhc[cell_01]"><?php select_module_for_cell($opthc,'cell_01'); ?></select>
<select class="" name="bscHOhc[cell_02]"><?php select_module_for_cell($opthc,'cell_02'); ?></select>
// и так далее...
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
function select_module_for_cell($opthc, $module) {
    $modules = get_modules_for_cell();
    foreach($modules as $m) {
        echo "<option value='".$m."'".selected($m, $opthc[$module]).">".$m."</option>";
    }
}
function get_modules_for_cell() {
    $modules = ['module-01','module-02','module-03','module-04','module-05'];
    return $modules;
}
?>
В итоге выводятся выпадающие списки cell_01...cell_05 и в каждом module-01...module-05

Хотел через foreach подставлять cell_01...cell_05 в name="bscHOhc[cell_01]" и в select_module_for_cell($opthc,'cell_01') ;
Но выдаёт ошибку в строке с комментарием далее:

Помогите пожалуйста, я плохо знаю php, и не понял как найти информацию, чтобы корректно написать код без этой ошибки
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$cells = [['Cell 01','cell_01'],['Cell 02','cell_02'],['Cell 03','cell_03'],['Cell 04','cell_04'],['Cell 05','cell_05']];
foreach($cells as list($c_names,$c_numbers)) {
    $cells_numbers = "bscHOhc[".$c_numbers."]";
    $select_modules = select_module_for_cell($opthc,$c_numbers); // Fatal error: Uncaught Error: Call to undefined function select_module_for_cell()
    echo "<p>".$c_names."</p> $nbsp; <select class='' name='".$cells_numbers."'>".$select_modules."</select><br>";
}
function select_module_for_cell($opthc, $module) {
    $modules = get_modules_for_cell();
    foreach($modules as $m) {
        echo "<option value='".$m."'".selected($m, $opthc[$module]).">".$m."</option>";
    }
}
function get_modules_for_cell() {
    $modules = ['module-01','module-02','module-03','module-04','module-05'];
    return $modules;
}
?>
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
11.09.2018, 11:47
Лучший ответ Сообщение было отмечено luchezarniy как решение

Решение

Приведённый вами код не работает именно в том виде, в каком вы привели?

Попробуйте объявления функций переместить выше массива $cells.
Хотя вряд ли PHP 7.0 может так сильно отличаться от других версий. В других версиях разницы нет, где объявлена функция (выше или ниже).
1
0 / 0 / 0
Регистрация: 11.09.2018
Сообщений: 4
11.09.2018, 11:53  [ТС]
Так и сделал, объявил функции выше, и заработало, только теперь выдаёт ошибку Недопустимое смещение строки
PHP
1
2
3
4
5
6
7
8
<?php
function select_module_for_cell($opthc, $module) {
    $modules = get_modules_for_cell();
    foreach($modules as $m) {
        echo "<option value='".$m."'".selected($m,$opthc[$module]).">".$m."</option>"; // Warning: Illegal string offset 'cell_01'
    }
}
?>
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
11.09.2018, 17:24
В данном скрипте вообще кругом непонятные вещи.
Например, что за $opthc?
0
0 / 0 / 0
Регистрация: 11.09.2018
Сообщений: 4
13.09.2018, 09:48  [ТС]
add_option('bscHOhc');
$opthc = get_option('bscHOhc');
в этой переменной данные, которые сохраняются в БД

Добавлено через 8 минут
<option value='".$m."'".selected($m,$opthc[$module]).">".$m."</option>
должно подставляться в
<select class="" name="">...$opthc...</select>
и оно подставляется и данные тоже какие нужно, только не внутрь <select>, а вне с ошибкой на каждую сгенерированную строку, приведённую выше

Добавлено через 5 минут
т.е. сначала выводит все
<option value="module-N">module-N</option>
а далее
<select class="" name="bscHOhc[cell_N]"></select>

Добавлено через 13 минут
Как прочитал про недопустимое смещение строки, то похоже код запускает ошибку из-за того, что
PHP
1
2
3
4
5
6
7
8
<?php
function select_module_for_cell($opthc, $module) {
    $modules = get_modules_for_cell();
    foreach($modules as $m) {
        echo "<option value='".$m."'".selected($m,$opthc[$module]).">".$m."</option>"; // Warning: Illegal string offset 'cell_01'
    }
}
?>
не является массивом, а строкой.
Т.е. мне нужно передать получаемые данные через foreach как массив?

Добавлено через 4 минуты
Так же говорят: "Эта ошибка означает, что вы используете смещение строки, что является незаконным. Смещения строк должны быть положительным числом, а не строкой. Это чаще всего происходит при доступе к строковой переменной, но вы думаете, что это массив... Вы пытаетесь использовать строку как полный массив"

Добавлено через 13 минут
Т.е. из всех сгенерированных <option value='".$m."'".selected($m,$opthc[$module]).">".$m."</option> мне нужно сделать массив, а потом уже передать его в <select class="" name="">...$xxxx...</select>, осталось понять как

Добавлено через 1 час 45 минут
В общем это из-за того, что
add_option('bscHOhc');
$opthc = get_option('bscHOhc');
не являлись частью <form>, или как то так... на странице зарегистрирована опция bscHO... после изменения $opthc на $opt = get_option('bscHO'), ошибка исчезла

Добавлено через 16 минут
В общем всё заработало вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function get_modules_for_cell() {
    $modules = ['module-01','module-02','module-03'];
    return $modules;
}
function select_module_for_cell($opt,$module) {
    $modules = get_modules_for_cell();
    foreach($modules as $m) {
        echo "<option value='".$m."' ".selected($m,$opt[$module]).">".$m."</option>";
    }
}
$cells = [['Cell 01','cell_01'],['Cell 02','cell_02'],['Cell 03','cell_03']];
foreach($cells as list($c_names,$c_numbers)) {
    $cells_numbers = "bscHO[".$c_numbers."]";
    echo "<select class='' name='".$cells_numbers."'>";
    echo select_module_for_cell($opt,$c_numbers);
    echo "</select>";
}
?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.09.2018, 09:48
Помогаю со студенческими работами здесь

Структура: Не могу понять, почему выдает ошибку и как собственно эту ошибку можно исправить?
Привет,не могу понять почему ошибку выдает и как сбстно эту ошибку можно исправить? #include &lt;stdio.h&gt; #include...

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

Не могу понять как исправить ошибку
Есть программа: program new_element; const Ar : аггау of Integer = (11, 12, 13, 14, 15, 15, 16, 17, 18, 19); var i: Integer; ...

Не могу понять, как исправить ошибку
Есть задание: &quot;Дано натуральное число N. Вычислить произведение первых N сомножителей: р = ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru