Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 1
Регистрация: 08.05.2014
Сообщений: 82
1

Fatal error: Cannot redeclare checks2() (previously declared in file.php on line 45) in file.php on line 45

01.09.2014, 17:35. Просмотров 1057. Ответов 7
Метки нет (Все метки)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function result($plist) {
foreach ($plist as $arraylist) {
    $a = getpage($site); //через curl
    $pos = strpos((trim(strtolower($a))), (trim(strtolower($arraylist))));
    echo "<tr><td>".$arraylist."</td>";
    
    function checks2($one) { //45 строка
        if ($one === false) {
          return "Нет";
        } else {
        return "Да";
        }
    }
    echo "<td>" . checks2($pos) . "</td></tr>";
    $log .= $arraylist . " " . checks2($pos) . PHP_EOL;
}
return $log;
}
Понимаю, что что-то накосячил с циклом... Не поможете?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2014, 17:35
Ответы с готовыми решениями:

Fatal error: Cannot redeclare quoted_printable_encode() in C:\home\test.ru\www\index.php on line 60
Имеется форма отправки сообщения на e-mail: &lt;?php session_start(); $admin = 'admin@mail.ru'; ...

Fatal error: Cannot redeclare phpmm_integrity() in /usr/local/hosting/shared/head.php on line 17
Помогите исправить... Warning: mysql_query() expects parameter 2 to be resource, array given...

Ошибка Fatal error: Cannot redeclare Point::getX() in E:\OpenServer\domains\test.ru\index.php on line 15
Fatal error: Cannot redeclare Point::getX() in E:\OpenServer\domains\test.ru\index.php on line 15 ...

ошибка Parse error: syntax error, unexpected end of file in E:\OpenServer\domains\test.ru\index.php on line 23
&lt;!DOCTYPE html&gt; &lt;html lang=&quot;ru&quot;&gt; &lt;head&gt; &lt;title&gt;Калькулятор&lt;/title&gt; &lt;/head&gt; &lt;body&gt; ...

7
Native x86
3375 / 2218 / 654
Регистрация: 13.02.2013
Сообщений: 7,319
01.09.2014, 17:38 2
Зачем функцию checks2() внутри цикла объявили? Вынесете ее в начало php-файла и все заработает.
0
3 / 3 / 1
Регистрация: 08.05.2014
Сообщений: 82
01.09.2014, 17:41  [ТС] 3
quwy, в таком случае перестает работать проверка совпадения $pos. Всегда выдает "Нет"
0
Native x86
3375 / 2218 / 654
Регистрация: 13.02.2013
Сообщений: 7,319
01.09.2014, 17:49 4
Цитата Сообщение от Lustmord Посмотреть сообщение
в таком случае перестает работать проверка совпадения $pos. Всегда выдает "Нет"
А с чего вы решили, что это как-то связано с местом декларации функции? Ищите проблему в значениях $a и $arraylist.

Добавлено через 2 минуты
PHP -- динамический язык, объявление функции в цикле эквивалентно повторному объявлению.
0
3 / 3 / 1
Регистрация: 08.05.2014
Сообщений: 82
01.09.2014, 17:54  [ТС] 5
quwy, если я выношу след. строки за функцию, то всё работает. Значения тут не причем.
Здесь общий смысл - сравнение 2 строк: $a и $arraylist, и вывод если совпало - "да", если нет - "нет".

PHP
1
2
3
4
5
6
7
8
9
10
foreach ($plist as $arraylist) {
    $a = getpage($site);
    $pos = strpos((trim(strtolower($a))), (trim(strtolower($arraylist))));
    echo "<tr><td>".$arraylist."</td>";
    if ($pos === false) {
        echo "<td>Нет</td></tr>";
    } else {
        echo "<td>Да</td></tr>";
    }
}
Но мне надо использовать результат как функцию...
0
1928 / 1758 / 821
Регистрация: 23.01.2014
Сообщений: 6,203
02.09.2014, 18:04 6
Lustmord, Ваш код, приведенный в порядок:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function checks2($one)
{
    if ($one === false)
    {
        return "Нет";
    }
    else
    {
        return "Да";
    }
}
 
function result($plist)
{
    foreach ($plist as $arraylist)
    {
        $a = getpage($site); //через curl
        $pos = strpos((trim(strtolower($a))), (trim(strtolower($arraylist))));
        echo "<tr><td>".$arraylist."</td>";
        echo "<td>" . checks2($pos) . "</td></tr>";
        $log .= $arraylist . " " . checks2($pos) . PHP_EOL;
    }
    return $log;
}
Но зачем все это городить, если можно проще (если нужно сравить равны ли строки, как Вы написали выше, не понимаю зачем использовать функцию strpos(), почему не сравнить их знаком сравнения "==" ?):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
function rfesult($plist)
{
    foreach ($plist as $arraylist)
    {
        $a = getpage($site); //через curl
        $da = trim(strtolower($a)) == trim(strtolower($arraylist)) ? "Да" : "Нет";
        echo "<tr><td>".$arraylist."</td>";
        echo "<td>" . $da . "</td></tr>";
        $log .= $arraylist . " " . $da . PHP_EOL;
    }
    return $log;
}
1
3 / 3 / 1
Регистрация: 08.05.2014
Сообщений: 82
02.09.2014, 22:50  [ТС] 7
Реализовал несколько по-другому. Но общий косяк был в том, что в функции в getpage отправлял переменную $site, а функция ничего о ней знать не знает

PHP
1
2
3
4
5
6
7
8
9
10
11
12
function result1($plist) {
$site = $_POST['site'];
$a = getpage($site);
    foreach ($plist as $arraylist) {
        $pos = strpos((trim(strtolower($a))), (trim(strtolower($arraylist))));
        $check = ($pos === false) ? 'Нет' : 'Да';
        echo "<tr><td>".$arraylist."</td>";
        echo "<td>" . $check . "</td></tr>";
        $log .= $arraylist . " " . $check . PHP_EOL;
    }
    return $log;
}
0
1928 / 1758 / 821
Регистрация: 23.01.2014
Сообщений: 6,203
03.09.2014, 14:46 8
Лучший ответ Сообщение было отмечено Lustmord как решение

Решение

Цитата Сообщение от Lustmord Посмотреть сообщение
Но общий косяк был в том, что в функции в getpage отправлял переменную $site, а функция ничего о ней знать не знает
в той ошибке которую вы указали "косяк" в том, что вы одну и ту же функцию несколько раз объявляете...
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2014, 14:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Fatal error: Class 'PEAR_Error' not found in C:\xampp\php\PEAR\DB.php on line 947
Здравствуйте!!! Помогите мне с мой проблемой пожалуйста. Проблема в том что, какой бы я код не...

Ошибка Fatal error: in Z4:\xampp\htdocs\app\connection.php on line 10
Добрый день, в php разбираюсь плохо, и вот такая у меня ошибка Warning: PDO::__construct(): in...

Fatal error: Call to a member function query() on a non-object in db.php on line 23
Все привет. Я только учусь делать сайты с помщью ООП и паттерна mvc. Вот мой файл db.php, браузер...

Fatal error: Call to a member function on a non-object in C:inetlocalhostwww estpearuser.php on line 57
Поймал такой глюк. Fatal error: Call to a member function on a non-object in...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.