【发布时间】:2011-06-13 14:35:11
【问题描述】:
我喜欢认为我对 php 非常了解,但这让我感到困惑。
保持基本我有:
function req_new($pname, $use=null, $depID=null, $manID=null, $manName=null, $suppID=null, $suppName=null, $cat=null, $brand=null, $name, $email, $custom_code, $user=null, $method=null)
{
//validation
if($pname == ''){return false;}
if($manID==null AND $manName==null){return false;}
foreach(func_get_args() as $arg)
{
$arg = fquery_sanitize($arg);
}
//submit new request
$sql = "insert into sds_product_requests ".
"(prodName, produse, depID, reqDate, manID, manName, suppID, suppName, prodCat, prodBrand, Name, Email, InternalC, `user`, method) ".
"VALUES ".
"('$pname','$use','$depID', NOW(),'$manID', '$manName', '$suppID', '$suppName', '$cat', '$brand', '$name', '$email', '$custom_code', '$user', $method)";
$result = fquery_db($sql);
if($result>1)
{return true;}
else
{return false;}
}
如果代码使用变量名$name,则不起作用。改用另一个变量名,如$pname,它可以工作。如果我使用变量名$name,则返回false。
关于为什么会发生这种情况的任何想法?
调用函数
<?php
$name = getPOST('name');
$depID = getPOST('depID');
$cat = getPOST('cat');
$supp = getPOST('supp');
$suppID = getPOST('suppID');
$man = getPOST('man');
$manID = getPOST('manID');
$confirm = req_new('THIS IS A NAME', null, $depID, $manID, $man, $suppID, $supp, $cat, null, null, null, null, fauth_GetUserID(), 1);
?>
【问题讨论】:
-
您能否提供更多的代码,或者整个函数的代码?另外,你忘记
return false中的分号了吗? -
@Luzhin:+1,听起来好像是名称冲突导致了问题。
-
PHP现在有变参函数了吗?!
-
@Tomalak Geret'kal,多年来我一直在 PHP 中使用可变参数函数(从版本 4 开始)。请参阅
func_num_args()、func_get_arg()和func_get_args(),以及“Default argument values”。如果说, $bla....部分,很明显它只是一个伪代码。 -
在原始版本中,您将
$name作为第一个参数,并将其与''进行了比较。在编辑版本中,您将$name作为 n-th 参数,但与$pname进行比较,这是第一个参数。在意识形态上,情况并非如此。
标签: php variable-names