将变量从循环传递到函数

时间:2019-03-12 15:29:20

标签: php wordpress loops variables

我与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。

1 个答案:

答案 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;
}