我与Php的合作不到2个月(这也是我的第一个问题,所以请告诉我是否遗漏了一些东西),直到今天,一切都进展顺利。我正在为Wordpress制作表单插件,目前正在实现代码以使保存在数据库中的表单与包含数据库中表单ID的短代码连接。第一个表单的ID为1,短代码为IForm_1。很简单。
当通过所有表单循环并且无法将$ ID值从循环传递到IForm函数时,会发生问题。
$ID= 0;
$FormID= 0;
settype($ID, "integer");
for ($x = 1; $x <= 300; $x++) {
global $ID;
$ID++;
$ShortCode = "IForm_";
$ShortCode .= $ID;
$FormID = $ID;
add_shortcode( $ShortCode, 'IForm_Array' );
$ShortCode ='';
}
这是一个非常简单的循环,当$ ShortCode与网站上使用的短代码对齐时,它将起作用,并且IForm得到应有的使用。
function IForm(){
global $ID;
//testing_decode();
// Gets the value of baseTest from getDB and puts it in test.
$DBForm = getDB($ID);
$Form = $DBForm;
$Form .= "Works but not really";
return $Form;
}
这是函数。
问题是$ ID在函数中始终为300,这是循环的结尾。当循环中的$ ID与站点/帖子上的短代码ID对齐时,将执行IForm,这告诉我$ ID值对于循环的某些部分确实是正确的。当ID确实正确时,我想将其传递给IForm函数,以使用它在数据库(MySQL)中找到正确的表单。
现在,我的问题是如何将循环第三行的$ ID值传递给函数的第五行(如果可以做到的话)。另一种方法是在排队时强制中断循环,并使用最后的$ ID值传递给IForm。
答案 0 :(得分:0)
让我们看看你在那做什么
EmptyStringArray
相反,我建议这样做
$ID= 0;
// Define a variable called ID
for ($x = 1; $x <= 300; $x++) {
global $ID;
// get access to global variable id
$ID++;
// increment local or global counter, undefined behaviour
不要将全局变量中的变量传递给函数,而应使用参数
global $ID;
for ($x = 1; $x <= 300; $x++) {
$ID++;
// Do what you think you have to do
并调用
之类的函数function IForm($id){
//testing_decode();
$DBForm = getDB($id);
$Form = $DBForm;
$Form .= "Works very good";
return $Form;
}