|
|
|
| есть функция примерно такая:
<?
function check()
{
$query = "SELECT * FROM users WHERE name = '$name' AND password = '$pass' ";
connect();
$check = mysql_query($query);
$result = mysql_fetch_array($check);
return $result['status']; // тут строка 1:2:3:4:5:6:7:8
}
?>
|
Ниже идет следущая
<?
function status()
{
$string = cookie($result['status']);
$result_sting = explode (":" , $string);
$Zero = $result_sting[0];
$Five = $result_sting[5];
$Six = $result_string[6];
return $Zero;
return $Five;
return $Six;
}
?>
|
потом далее код
<?
echo "Status is " . cookie($result['status']);
echo "</br>Sstatus result string " . status($result_sting);
echo "</br>Zero is " . status($Zero);
echo "</br>Five is " . status($Five);
echo "</br>Six is " . status($Six);
echo "</br>---------------------------------";
$st = "1:2:3:4:5:6:7:8";
$exp_st = explode (":" , $st);
$zero = $exp_st[0];
$one = $exp_st[1];
$five = $exp_st[5];
echo "</br>Zero" . $zero;
echo "</br>One" . $one;
echo "</br>Five" . $five;
?>
|
и это все выводит
Status is 1:2:3:4:5:6:7:8
Status result string 1
Zero is 1
Five is 1 //Почему сдесь 1 , когда должно быть 6
Six is 1 //А сдесь должно быть 7
---------------------------------
Zero 1 //
One 2 //
Five 6 // а сдесь выводится все нормально как надо. | |
|
|
|
|
|
|
|
для: RV
(16.03.2005 в 13:52)
| | Нестыковка вот какого плана: функция status объявлена без параметра, а вызывается с параметром? | |
|
|
|
|
|
|
|
для: RV
(16.03.2005 в 13:52)
| | стоп. нестыковка
function cookie() // а не функция check
{
$query = "SELECT * FROM users WHERE name = '$name' AND password = '$pass' ";
|
и тут мы ее соответсвенно вызываем. БЕЗ параметра
function status()
{
$string = cookie($result['status']);
|
почему же тут работает без параметра а в конце нет? | |
|
|
|
|
|
|
|
для: RV
(16.03.2005 в 14:39)
| | А вообще насмерть запутался :))) а тогда вызов функции
<?php
$string = cookie($result['status']);
?>
|
С передачей $result['status'] в качестве параметра, что означает? Ведь $result нет в момент вызыва и функции мы ничего передать не можем... Или вы хотите из функции через параметр передать значение? Тогда следует прибегать к передаче по ссылке, так как побочный эффект в виде измения значения параметра функции, после её вызова, запрещён.
PS Не навязываю вам собственный стиль программирования, но обычно, в случае сложного кода делают так: сначала создают код от начала до конца без использования функций, отлаживают его до рабочего состояния, а потом дробят на функции с проверкой работоспособнсти на каждом шаге. Функции отлаживать сложнее... | |
|
|
|
|
|
|
|
для: cheops
(16.03.2005 в 14:48)
| | вот так:
<?
function cookie()
{
$query = "SELECT * FROM users WHERE name = '$user_name' AND password = '$hash_pass' ";
connect();
$check = mysql_query($query);
$result = mysql_fetch_array($check);
return $result['status'];
}
function status()
{
$string = cookie($result['status']);
$result_sting = explode (":" , $string);
$Zero = $result_sting[0];
$Five = $result_sting[5];
$Six = $result_string[6];
return $Zero;
return $Five;
return $Six;
}
echo "Status is " . cookie($result['status']);
echo "</br>Sstatus result string " . status($result_sting);
echo "</br>Zero is " . status($Zero);
echo "</br>Five is " . status($Five);
echo "</br>Six is " . status($Six);
echo "</br>---------------------------------";
$st = "1:2:3:4:5:6:7:8";
$exp_st = explode (":" , $st);
$zero = $exp_st[0];
$one = $exp_st[1];
$five = $exp_st[5];
echo "</br>Zero " . $zero;
echo "</br>One " . $one;
echo "</br>Five " . $five;
?>
|
Собственно это и есть отладка фуекции так без функции работает | |
|
|
|
|
|
|
|
для: RV
(16.03.2005 в 14:57)
| |
return $Zero;
return $Five;
return $Six;
|
Функция status() возвращает $Zero и "останавливается". Поэтому везде и 1 выходит.
В функции можно использовать только один return | |
|
|
|
|
|
|
|
для: isset
(16.03.2005 в 15:05)
| | >В функции можно использовать только один return
ну так и надо было в книге писать :) | |
|
|
|
|
|
|
|
для: isset
(16.03.2005 в 15:05)
| | Да, в функции можно использовать только один оператор return, но на PHP эту проблему можно очень элегантно решить для этого нужно возвращать массив.
<?php
function status()
{
$string = cookie($result['status']);
$result_sting = explode (":" , $string);
$Zero = $result_sting[0];
$Five = $result_sting[5];
$Six = $result_string[6];
return array($Zero, $Five, $Six);
}
?>
|
А в месте вызова функции распотрошить массив при помощи кострукции list
<?php
list($Zero, $Five, $Six) = status();
?>
|
List() поместит значения соотвествующих элементов массива, возвращаемого функцией status() в переменные $Zero, $Five и $Six. | |
|
|
|
|
|
|
|
для: cheops
(16.03.2005 в 15:22)
| | таак. а теперь мне надо получить значение $Zero (в данном случае должно возратить 1). что то сколько не пытался. так ничего и не вышло | |
|
|
|
|
|
|
|
для: RV
(16.03.2005 в 16:35)
| | Не очень понятно откуда его необходимо возратить - возвращается ли функцией массив? Если да, то нужное вам значение должно быть в первом элементе массива с индексом 0. | |
|
|
|
|
|
|
|
для: cheops
(16.03.2005 в 19:15)
| | возратить надо из функции status().
пробовал например $status[0] | |
|
|
|
|
|
|
|
для: RV
(16.03.2005 в 19:31)
| | ну так как получить данные $Zero, $Five, $Six из функции status() ?? | |
|
|
|
|
|
|
|
для: RV
(17.03.2005 в 15:17)
| |
<?
function status()
{
global $Zero, $Five, $Six;
$string = cookie($result['status']);
$result_sting = explode (":" , $string);
$Zero = $result_sting[0];
$Five = $result_sting[5];
$Six = $result_string[6];
}
?>
|
использование:
<?
status();
echo "</br>Zero is " . $Zero;
echo "</br>Five is " . $Five;
echo "</br>Six is " . $Six;
?>
|
| |
|
|
|
|
|
|
|
для: isset
(17.03.2005 в 19:41)
| | >
><?
>function status()
>{
>global $Zero, $Five, $Six;
>$string = cookie($result['status']);
>
>$result_sting = explode (":" , $string);
>$Zero = $result_sting[0];
>$Five = $result_sting[5];
>$Six = $result_string[6];
>}
>?>
>
|
>использование:
>
><?
>status();
>echo "</br>Zero is " . $Zero;
>echo "</br>Five is " . $Five;
>echo "</br>Six is " . $Six;
>?>
>
|
а можно с этим по подробнее. вот я пишу после функции
<?
list($Zero, $Five, $Six) = status();
echo status($Five);
?>
|
выводит Array , а надо чтоб выводило содержимое $Five | |
|
|
|
|
|
|
|
для: RV
(19.03.2005 в 20:35)
| |
<?
list($Zero, $Five, $Six) = status();
echo $Five;
?>
|
| |
|
|
|
|
|
|
|
для: isset
(19.03.2005 в 20:50)
| | странно. я веть так пробовал а оно вроде не работало. а сейчас работает. сенкс | |
|
|
|