如何将变量从一个方法传递到同一类中的另一个方法?

时间:2018-06-30 16:14:54

标签: php class methods

这是我的代码:

class something {
    public function one() {
        $choices = array(
            'something' = array(
                'name' => 'test';
            ),
            'something_two' = array(
                'name' => 'test_one';
            ),
        );
    }

    public function two() {
        ?>
        <select>
            <?php
            foreach ($this->function_one() as $choice) {
                echo '<option value="'.$choice['name'].'">'.$choice['name'].'</option>';
            }
            ?>
        </select>
        <?php
    }
}

问题是:
如何从另一个函数中获取一个变量并将其放入foreach循环?

我收到此错误:

  

警告:为中的foreach()提供了无效的参数

2 个答案:

答案 0 :(得分:0)

我还没有测试过,但是我更正了我在代码中看到的所有错误,请尝试一下。

您的代码没有函数返回任何东西。 foreach循环还以不同的方式调用函数,我删除了工作的“函数”,并用$this->one()替换了它。

class something {

public function one(){
   $choices = array(
     'something' = array(
       'name' => 'test';
     ),
     'something_two' = array(
       'name' => 'test_one';
     ),
   );
   return $choices;
}

public function two(){
?>
<select>
  <?php
  foreach ($this->one() as $choice ){
    echo '<option value="'.$choice['name'].'">'.$choice['name'].'</option>';
  }
  ?>
</select>
<?php
}    

}

答案 1 :(得分:0)

首先,要注意几点:

  • 您的数组声明有多个语法错误(==>并删除分号)。
  • 生成选择选项时,不需要将value属性与文本值相同时编写。

我现在将提供几个使用不同技术的工作代码块。

代码1:(Demo

class something {
    public function one() {
        $choices = array(
            'something' => array(
                'name' => 'test'
            ),
            'something_two' => array(
                'name' => 'test_one'
            )
        );
        return $choices;
    }

    public function two() {
        echo "<select>";
            echo "<option>" , implode("</option><option>", array_column($this->one(), 'name')) , "</option>";
        echo "</select>";
    }
}

$foo = new something();
$foo->two();

代码2:(Demo

class something {
    public $choices = array();
    public function __construct() {
        $this->choices = array(
            'something' => array(
                'name' => 'test'
            ),
            'something_two' => array(
                'name' => 'test_one'
            )
        );
    }

    public function two() {
        echo "<select>";
            echo "<option>" , implode("</option><option>", array_column($this->choices, 'name')) , "</option>";
        echo "</select>";
    }
}

$foo = new something();
$foo->two();

是从函数one()显式调用two()还是使用构造函数在类中(通过对象$this声明变量(属性)取决于您的项目要求。我将避免在php手册中写出大量引号;我只建议您阅读一些有关类和方法的基本教程。