我想理解为什么这段代码会给我:
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);
}
}
这:
1996 - La fondazione - Lorem ipsum dolor坐下来,念念 adipisicing elit。 sunt ut voluptatum eius sapiente,totam reiciendis temporibus qui quibusdam,recusandae sit vero unde,sed,incidunt et ea quo dolore laudantium consectetur!
Marzo 1999 - Ufficio laboratorio a Lavagna - Lorem ipsum dolor坐 amet,consectetur adipisicing elit。 sunt ut voluptatum eius sapiente, totam reiciendis temporibus qui quibusdam,recusandae sit vero unde, sed,incidunt et ea quo dolore laudantium consectetur!
2012年Dicembre - Spostri Levante Spostamento - Lorem ipsum dolor坐 amet,consectetur adipisicing elit。 sunt ut voluptatum eius sapiente, totam reiciendis temporibus qui quibusdam,recusandae sit vero unde, sed,incidunt et ea quo dolore laudantium consectetur!
Febbraio 2016 - Nuovo Sito - Lorem ipsum dolor sit amet,consectetur adipisicing elit。 sunt ut voluptatum eius sapiente,totam reiciendis temporibus qui quibusdam,recusandae sit vero unde,sed,incidunt et ea quo dolore laudantium consectetur!
但是这个:
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);
}
}
生成不需要的内容:
1996 - La fondazione - Lorem ipsum dolor坐下来,念念 adipisicing elit。 sunt ut voluptatum eius sapiente,totam reiciendis temporibus qui quibusdam,recusandae sit vero unde,sed,incidunt et ea quo dolore laudantium consectetur!
1996 - La fondazione - Lorem ipsum dolor坐下来,念念 adipisicing elit。 sunt ut voluptatum eius sapiente,totam reiciendis temporibus qui quibusdam,recusandae sit vero unde,sed,incidunt et ea quo dolore laudantium consectetur!
1996 - La fondazione - Lorem ipsum dolor坐下来,念念 adipisicing elit。 sunt ut voluptatum eius sapiente,totam reiciendis temporibus qui quibusdam,recusandae sit vero unde,sed,incidunt et ea quo dolore laudantium consectetur!
1996 - La fondazione - Lorem ipsum dolor坐下来,念念 adipisicing elit。 sunt ut voluptatum eius sapiente,totam reiciendis temporibus qui quibusdam,recusandae sit vero unde,sed,incidunt et ea quo dolore laudantium consectetur!
任何人都可以帮助我吗?
答案 0 :(得分:0)
在你的第二个例子中,你已将$code = '$a - $b - $c <br>';
放在循环之外,因此循环遍历每一行时,该值不会改变。
在第一个示例中,它放在循环中,因此$a
,$b
和$b
的值将在每次迭代时重新分配。
答案 1 :(得分:0)
这是因为你在循环中改变了$ code。
在第一次迭代中它等于“$ a - $ b - $ c
”但在第二次迭代中它已被替换。
尝试改变:
$code = '$a - $b - $c <br>';
要:
$codeTemplate = '$a - $b - $c <br>';
然后在循环内部将其写为:
eval("\$code = \"$codeTemplate\";");
编辑:
但是,如果你想让代码生成外部代码,可能代替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>";
});