在不同的PHP函数中访问变量

时间:2017-06-12 11:29:40

标签: php arrays class

我试图在一个函数中从3个不同的函数中访问3个变量。他们是所有阵列。我想在那个单一的函数中foreach

class poetry {
    public function __construct() {
        add_action( 'wp_head', array( $this, 'generate_scripts' ) );
    }

    public function page_one() {
        $options = array(
            array( 'content1', 'Content1', 'The Content 1'),
            array( 'content2', 'Content2', 'The Content 2'),
            array( 'content3', 'Content3', 'The Content 3'),
        );

        $this->add_settings( 'page_one', $options );
    }

    public function page_two() {
        $options = array(
            array( 'content4', 'Content4', 'The Content 4'),
            array( 'content5', 'Content5', 'The Content 5'),
            array( 'content6', 'Content6', 'The Content 6'),
        );

        $this->add_settings( 'page_two', $options );
    }

    public function page_three() {
        $options = array(
            array( 'content7', 'Content7', 'The Content 7'),
            array( 'content8', 'Content8', 'The Content 8'),
            array( 'content9', 'Content9', 'The Content 9'),
        );

        $this->add_settings( 'page_three', $options );
    }

    public function generate_scripts() {
        // how do I access $options from the above functions in this function?
        foreach($options as $option) {
            echo $option[0];
        }
    }

}

如何从上述功能访问所有3 $options并预先generate_scripts()中的数组?

2 个答案:

答案 0 :(得分:1)

您需要在与要使用它们的函数相同的范围中获取变量。您可以使用$this设置类的变量,也可以{{ 1}}数组。无论哪种方式,您都需要先调用它。

以下是一个示例,说明如何将所有变量创建为类的属性,并使用return。请注意,您需要先调用方法来填充变量,然后才能使用它。

$this

或者,您可以使用class poetry { private $page_one; // Initialize variable first public function __construct() { add_action( 'wp_head', array( $this, 'generate_scripts' ) ); } public function page_one() { $this->page_one = array( array( 'content1', 'Content1', 'The Content 1'), array( 'content2', 'Content2', 'The Content 2'), array( 'content3', 'Content3', 'The Content 3'), ); } /* Rest of class */ public function generate_scripts() { $this->page_one(); // Call method, so variable holds the values $options = $this->page_one; foreach($options as $option) { echo $option[0]; } } } 每个数组,并将其用作return值。如果您需要在函数内多次使用它,最后可以$options - 完成您需要的所有操作后。这样,该方法返回数组 - 您可以根据需要将其用作变量!

return $options;

如果要调用所有方法,则需要添加其他代码。您可以拥有类的属性,在调用方法时推送所有数组,然后循环 - 但您仍然需要调用这些方法来填充变量才能使用它。

答案 1 :(得分:-1)

<?php

class poetry {

    private $options_one;
    private $options_two;
    private $options_three;


    public function __construct() {
        add_action('wp_head', array($this, 'generate_scripts'));
    }

    public function page_one() {
        global $options_one;
        $options_one = array(
            array('content1', 'Content1', 'The Content 1'),
            array('content2', 'Content2', 'The Content 2'),
            array('content3', 'Content3', 'The Content 3'),
        );
    }

    public function page_two() {
        global $options_two;
        $options_two = array(
            array('content4', 'Content4', 'The Content 4'),
            array('content5', 'Content5', 'The Content 5'),
            array('content6', 'Content6', 'The Content 6'),
        );
    }

    public function page_three() {
        global $options_three;
        $options_three = array(
            array('content7', 'Content7', 'The Content 7'),
            array('content8', 'Content8', 'The Content 8'),
            array('content9', 'Content9', 'The Content 9'),
        );
    }

    public function generate_scripts() {
        $this->page_one();
        $this->page_two();
        $this->page_three();
        global $options_one, $options_two, $options_three;
        $options = array_merge($options_one[0], $options_two[0], $options_three[0]);
        foreach ($options as $option) {
            echo $option . "<br/>";
        }
    }

}