Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.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_Function_Variables_Scope - Fatal编程技术网

Php函数和变量及其代码

Php函数和变量及其代码,php,function,variables,scope,Php,Function,Variables,Scope,我想了解为什么此代码会给我: function query_select_array($col1, $col2, $col3, $table, $code) { $query = "SELECT * FROM $table"; if ($result = $this->myconn->query($query)) { while ($obj = mysqli_fetch_object($result)) { $a = $obj-

我想了解为什么此代码会给我:

function query_select_array($col1, $col2, $col3, $table, $code) {
    $query = "SELECT * FROM $table";
    if ($result = $this->myconn->query($query)) {
        while ($obj = mysqli_fetch_object($result)) {
            $a = $obj->$col1;
            $b = $obj->$col2;
            $c = $obj->$col3;
    $code = '$a - $b - $c <br>'; //I want pass this code with function, this is for test..
    eval("\$code = \"$code\";");
            echo $code;
        }
  mysqli_free_result($result);
    }
}
函数查询\u选择\u数组($col1,$col2,$col3,$table,$code){
$query=“从$table中选择*”;
如果($result=$this->myconn->query($query)){
while($obj=mysqli\u fetch\u object($result)){
$a=$obj->$col1;
$b=$obj->$col2;
$c=$obj->$col3;
$code='$a-$b-$c
';//我想用函数传递这段代码,这是为了测试。。 eval(“\$code=\“$code\”;”); echo$代码; } mysqli_免费_结果($result); } }
这:

1996年的今天,康塞特图尔的利姆·伊普苏姆·多洛·西特·阿梅特(Lorem ipsum dolor sit amet) 再见。我们需要智慧的力量,我们需要智慧的力量 时间,时间,时间,时间,时间等 敬爱上帝

Marzo 1999-拉瓦尼亚Ufficio实验室-Lorem ipsum dolor sit 阿梅特,我是一位杰出的献身者。我们必须有智慧, 时间之所及,时间之所及, 在这里,我要向你致以崇高的敬意

2012年4月-莱万特百货公司-Lorem ipsum dolor sit 阿梅特,我是一位杰出的献身者。我们必须有智慧, 时间之所及,时间之所及, 在这里,我要向你致以崇高的敬意

2016年2月-新西托-奥雷姆·伊普苏姆·多洛·希特·阿梅特,康塞特图尔 再见。我们需要智慧的力量,我们需要智慧的力量 时间,时间,时间,时间,时间等 敬爱上帝

但这是:

function query_select_array($col1, $col2, $col3, $table, $code) {
    $query = "SELECT * FROM $table";
    $code = '$a - $b - $c <br>'; //If I pass $code with the function i get the same effect...
    if ($result = $this->myconn->query($query)) {
        while ($obj = mysqli_fetch_object($result)) {
            $a = $obj->$col1;
            $b = $obj->$col2;
            $c = $obj->$col3;
            eval("\$code = \"$code\";");
            echo $code;
        }
  mysqli_free_result($result);
    }
}
函数查询\u选择\u数组($col1,$col2,$col3,$table,$code){
$query=“从$table中选择*”;
$code='$a-$b-$c
';//如果我用函数传递$code,我会得到相同的效果。。。 如果($result=$this->myconn->query($query)){ while($obj=mysqli\u fetch\u object($result)){ $a=$obj->$col1; $b=$obj->$col2; $c=$obj->$col3; eval(“\$code=\“$code\”;”); echo$代码; } mysqli_免费_结果($result); } }
生成不需要的:

1996年的今天,康塞特图尔的利姆·伊普苏姆·多洛·西特·阿梅特(Lorem ipsum dolor sit amet) 再见。我们需要智慧的力量,我们需要智慧的力量 时间,时间,时间,时间,时间等 敬爱上帝

1996年的今天,康塞特图尔的利姆·伊普苏姆·多洛·西特·阿梅特(Lorem ipsum dolor sit amet) 再见。我们需要智慧的力量,我们需要智慧的力量 时间,时间,时间,时间,时间等 敬爱上帝

1996年的今天,康塞特图尔的利姆·伊普苏姆·多洛·西特·阿梅特(Lorem ipsum dolor sit amet) 再见。我们需要智慧的力量,我们需要智慧的力量 时间,时间,时间,时间,时间等 敬爱上帝

1996年的今天,康塞特图尔的利姆·伊普苏姆·多洛·西特·阿梅特(Lorem ipsum dolor sit amet) 再见。我们需要智慧的力量,我们需要智慧的力量 时间,时间,时间,时间,时间等 敬爱上帝


有人能帮我吗?

在第二个示例中,您放置了
$code='$a-$b-$c
'
在循环之外,因此,当循环通过每一行时,值不会改变


而在第一个示例中,它被放置在循环中,因此,
$a
$b
$b
的值将在每次迭代中重新分配。

这是因为您正在循环中更改$code

在第一次迭代中,它等于“$a-$b-$c
”,但在第二次迭代中,它已经被替换

尝试更改:

$code = '$a - $b - $c <br>';
编辑:

但是,如果您想让生成$code的代码位于外部,您可以使用回调函数代替eval()

例如,类似于:

function query_select_array($table, $funcMakeCode) {
    $query = "SELECT * FROM $table";
    if ($result = $this->myconn->query($query)) {
        while ($obj = mysqli_fetch_object($result)) {
            $code = $funcMakeCode($obj);
            echo $code;
        }
        mysqli_free_result($result);
    }
}

...

query_select_array("tbl", function($obj) {
    $a = $obj->col1;
    $b = $obj->col2;
    $c = $obj->col3;
    return "{$a} - {$b} - {$c} <br>";
});
函数查询\u选择\u数组($table,$funcMakeCode){
$query=“从$table中选择*”;
如果($result=$this->myconn->query($query)){
while($obj=mysqli\u fetch\u object($result)){
$code=$funcMakeCode($obj);
echo$代码;
}
mysqli_免费_结果($result);
}
}
...
查询选择数组(“tbl”,函数($obj){
$a=$obj->col1;
$b=$obj->col2;
$c=$obj->col3;
返回“{$a}-{$b}-{$c}
”; });
可能
$code='$a-$b-$c
'在循环之外可用我确信我已经尝试过了。。。但是我又测试了一遍。。。这很有效!那是因为我快疯了。太多的编码和太多的经验。。。非常感谢你!
eval("\$code = \"$codeTemplate\";");
function query_select_array($table, $funcMakeCode) {
    $query = "SELECT * FROM $table";
    if ($result = $this->myconn->query($query)) {
        while ($obj = mysqli_fetch_object($result)) {
            $code = $funcMakeCode($obj);
            echo $code;
        }
        mysqli_free_result($result);
    }
}

...

query_select_array("tbl", function($obj) {
    $a = $obj->col1;
    $b = $obj->col2;
    $c = $obj->col3;
    return "{$a} - {$b} - {$c} <br>";
});