Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-创建函数问题_Php_Mysql_Function_Variables_Quotations - Fatal编程技术网

PHP-创建函数问题

PHP-创建函数问题,php,mysql,function,variables,quotations,Php,Mysql,Function,Variables,Quotations,我试图理解此代码,但我无法: $time = date('Y-m-d', strtotime('-30 days')); $what = create_function('$a', 'return $a.'.'"'." AND date > '$time'".'"'.';'); 为什么$time变量在这个创建的函数中成功传递,但是当我尝试时: $limit = 10; $what = create_function('$a', 'return '.'"'." LIMIT '$limit'

我试图理解此代码,但我无法:

$time = date('Y-m-d', strtotime('-30 days'));
$what = create_function('$a', 'return $a.'.'"'." AND date > '$time'".'"'.';');
为什么$time变量在这个创建的函数中成功传递,但是当我尝试时:

$limit = 10;
$what = create_function('$a', 'return '.'"'." LIMIT '$limit'".'"'.';');
美元限额没有吗


ps:如果我尝试$what=create_函数“$a”,“return.”。限制为10;它是有效的…

很难阅读,也很难区分您的示例中的“和”

试试这个:

$what = create_function('$a', "return \"LIMIT $limit;\""); 
以及

$what = create_function('$a', 'return \'LIMIT $limit;\''); 

您可以使用\作为转义字符,这意味着如果它是当前引号字符,则在此之后的下一个字符将不会被解释为结束引号

例如:

echo '\''; // will output '
echo '\"'; // will output \"
echo "\""; // will output "

我刚刚测试了您的第二个代码,它运行正常,正确地通过了$limit:

请注意,不要意外地将其写成$limit左右的引号字符:


在这种情况下,$limit不会被$limit的10值所取代。

首先,我想知道您为什么要使用?如果有任何可能,而且通常是这样,您应该尽量避免,因为这通常会导致非常草率的代码

我注意到的第一件事是,您的第二个示例对$a没有任何作用:

应该是:

$what = create_function('$a', 'return $a . '.'"'." LIMIT '$limit'".'"'.';');

此外,在连接字符串时,请尝试环绕字符串。按空格。它将使您的代码更具可读性,因此更易于调试。最后,简化双引号和单引号:

代码可以简化很多:

$what = create_function('$a', "return \"LIMIT $limit\";");

代码应该是有效的。请注意,在SQL语法中,限制后的数字不能用引号括起来

但在创建函数时,还可以将$limit作为参数传递给函数:

$what = create_function('$limit', 'return "LIMIT $limit";');
$str = $what(10);
或者根本不使用create_函数,直接进行字符串连接:

$str = 'LIMIT ' . $limit;

连接字符串时,代码似乎有点混乱,请尝试一种更简单的方法:

create_function('$a', sprintf('return "LIMIT %d"',$limit));

如果你不介意我问,为什么要创建一个函数来返回一个简单的字符串?

在create\u函数中,$limit用单引号表示;您应该将其包含在双引号LIMIT$LIMIT中,或者使用串联。运算符如下:“.$limit.”

你一定错过了什么-据我所知,它应该能像你期望的那样工作。100%确定你可以试试:“返回”限制$限制。请注意,在SQL中,限制后的数字周围不应该有引号,这使得字符串连接和引号orgy更加简单;但是,即使没有连接$limit,第一个和最后一个连接也是多余的:“return”。限制“$LIMIT.”;“.”在“引号”字符串中添加字符串是没有意义的。这两种方法都不起作用,第二种方法也不能满足OP的要求。你必须返回一个字符串。在它的当前形式中,您将得到一个错误。第二个错误将不起作用,因为$limit不是由$what创建的函数的局部变量。谢谢Chris,您做了出色的工作。至少,有些人仍然关心。
$what = create_function('$a', 'return $a . '.'"'." LIMIT '$limit'".'"'.';');
$what = create_function('$a', "return \"LIMIT $limit\";");
$what = create_function('$a', 'return "LIMIT ' .  $limit .'";');
$what = create_function('$limit', 'return "LIMIT $limit";');
$str = $what(10);
$str = 'LIMIT ' . $limit;
create_function('$a', sprintf('return "LIMIT %d"',$limit));