function foo($name, $allow) {
if(isset($allow))
$sql = $allow ? 'AND allow=1':'AND allow=0';
$query = mysql_query("SELECT * FROM tbl
WHERE name='$name' $sql");
}
Суть в том что $allow должна быть true или false, но если аргумент пустой ниче не подставлять в запрос.
Вопрос в том чему должна бысть тогда равна $allow по умолчанию в функции?, $allow=bool не работает.
Спустя 2 минуты, 33 секунды (16.09.2011 - 12:04) linker написал(а):
function foo($name, $allow = null)
{
if (!is_null($allow))
$sql = $allow ? 'AND allow=1':'AND allow=0';
...
Спустя 20 минут, 52 секунды (16.09.2011 - 12:25) Renden написал(а):
linker
Хмм.. еще вопрос, допустим так:
как мне допустим вызвать только allow, писать так foo('',false) -как то убого как можно отловить в функции то что нужен только 2 параметр, чтоб писать просто foo(false).
Возможно криво, но типы разные в 1 случае string, во 2-м bool я думаю только так?:
Или все проще? :)
Хмм.. еще вопрос, допустим так:
function foo($name = '', $allow = null) {
$sql = 'WHERE xz=0 ';
if(!is_null($allow))
$sql .= $allow ? 'AND allow=1':'AND allow=0';
if(!empty($name))
$sql .= "AND name='$name'";
$query = mysql_query("SELECT * FROM tbl $sql");
}
как мне допустим вызвать только allow, писать так foo('',false) -как то убого как можно отловить в функции то что нужен только 2 параметр, чтоб писать просто foo(false).
Возможно криво, но типы разные в 1 случае string, во 2-м bool я думаю только так?:
function foo($name = null, $allow = null) {
$sql = 'WHERE xz=0 ';
if(!is_null($allow))
$sql .= $allow ? 'AND allow=1':'AND allow=0';
if(!empty($name))
if(is_bool($name))
$sql .= $name ? 'AND allow=1':'AND allow=0';
else
$sql .= "AND name='$name'";
$query = mysql_query("SELECT * FROM tbl $sql");
}
Или все проще? :)
Спустя 5 часов, 46 минут, 31 секунда (16.09.2011 - 18:12) Winston написал(а):
Цитата (Renden @ 16.09.2011 - 12:25) |
как мне допустим вызвать только allow, писать так foo('',false) |
А зачем тебе передавать false в ф-ю если там уже и так стоит NULL ? :huh:
По моему у тебя напутано с логикой работы скрипта...
Тогда лучше напиши
$name = false, $allow = flase
PS: Есть золотое правило: ставьте все менее важные аргументы ф-и в конец.