Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Где ошибка?
 
 автор: Freddie_X   (23.01.2008 в 00:14)   письмо автору
 
 

Посмотрите на этот код.
<?php 
include('inc/config.php');
$query mysql_query('SELECT * FROM table_name WHERE id = 1');
$array mysql_fetch_array($query);
function 
func_name($var)
    {
        
$a $array[$var]; // здесь почему-то $a пустая, хотя я передал функции значение $var
        
if($a==""$result "Pusto"// поэтому результатом становится "Пусто"
        
else $result "Ne pusto";
        return 
$result;
    }
$var "head";
$a $array[$var]; // здесь же $a заполнена
if($a==""$result2 "Pusto";
else 
$result2 "Ne pusto"// а здесь результат - "Не пусто"
echo "simple>".$result2."<br>";
echo 
"func>"; echo func_name(head);
?>

Если вы поняли, то результаты должны быть одинаковыми (везде должно быть "Ne pusto"). Однако, мне выдаёт вот что:
simple>Ne pusto
func>Pusto

Не понимаю, везде ведь одинаковый алгоритм (и в функции и в простом способе), различается он лишь способом передачи $var...
Но функция не работает. Я уже часа 2 сижу и думаю, что здесь не так.
Помогите, люди!

   
 
 автор: bronenos   (23.01.2008 в 00:28)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 00:14)
 

первой строчкой в ф-ии global $array

   
 
 автор: Freddie_X   (23.01.2008 в 00:43)   письмо автору
 
   для: bronenos   (23.01.2008 в 00:28)
 

Не понял. Куда это вписать надо?
...
function func_name($var)
    { 
        global $array;
        $a = $array[$var]; // здесь почему-то $a пустая, хотя я передал функции значение $var 
        if($a=="") $result = "Pusto"; // поэтому...
...

Так?

   
 
 автор: bronenos   (23.01.2008 в 00:46)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 00:43)
 

Или
function func_name($var)
{
  return $GLOBALS[$var] ? "Pusto" : "Ne pusto";
}

   
 
 автор: Freddie_X   (23.01.2008 в 00:49)   письмо автору
 
   для: bronenos   (23.01.2008 в 00:46)
 

global $array сработало! Спасибо!
А что это значит, что сделала функция global?

   
 
 автор: bronenos   (23.01.2008 в 00:53)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 00:49)
 

Функция (а вернее, конструкция) указывает, что на переменную надо смотреть как на глобальную (в коде программы), а не локальную (в коде функции объявленную)

   
 
 автор: Freddie_X   (23.01.2008 в 01:01)   письмо автору
 
   для: bronenos   (23.01.2008 в 00:53)
 

Спасибо большое за помощь!

   
 
 автор: KPETuH   (23.01.2008 в 06:00)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 00:14)
 

ошибка у вас в этой строке
func_name(head);
и не надо здесь никаких глобальных переменных

   
 
 автор: bronenos   (23.01.2008 в 10:22)   письмо автору
 
   для: KPETuH   (23.01.2008 в 06:00)
 

это ошибка некритичная но плохая
а глобал или глобалс надо

   
 
 автор: KPETuH   (23.01.2008 в 10:44)   письмо автору
 
   для: bronenos   (23.01.2008 в 10:22)
 

а да нужно, просто не думал что можно из такого простого кода навернуть таких сложностей, топикстартеру рекомендую пересмотреть код немного его сократив при этом :)

   
 
 автор: Freddie_X   (23.01.2008 в 18:14)   письмо автору
 
   для: KPETuH   (23.01.2008 в 10:44)
 

Конечный код у меня совсем другой. И используются только функции.
И когда я попытался что-то сделать, у меня не выходило и я написал такой небольшой код для проверки работы функции.

ошибка у вас в этой строке
func_name(head);

и где здесь ошибка? написали бы... я же не телепат, ваши мысли читать :)

   
 
 автор: KPETuH   (23.01.2008 в 20:21)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 18:14)
 

что такое head

   
 
 автор: Freddie_X   (23.01.2008 в 20:34)   письмо автору
 
   для: KPETuH   (23.01.2008 в 20:21)
 

Тоже самое, что и $var = "head";

   
 
 автор: bronenos   (23.01.2008 в 20:39)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 20:34)
 

а птоставьте строчкой выше
define("head", "body");

   
 
 автор: Freddie_X   (23.01.2008 в 22:37)   письмо автору
 
   для: bronenos   (23.01.2008 в 20:39)
 

а что это мне даст?

   
 
 автор: bronenos   (23.01.2008 в 22:46)   письмо автору
 
   для: Freddie_X   (23.01.2008 в 22:37)
 

Это был намек на то, что параметр надо обрамить кавычками, а так он будет считаться за константу

   
 
 автор: Freddie_X   (24.01.2008 в 10:13)   письмо автору
 
   для: bronenos   (23.01.2008 в 22:46)
 

Да и без кавычек работает хорошо :)

   
 
 автор: KPETuH   (24.01.2008 в 10:41)   письмо автору
 
   для: Freddie_X   (24.01.2008 в 10:13)
 

ну ну потом когда наступите на грабли поздно будет.....

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования