我试图在一个函数中从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()
中的数组?
答案 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/>";
}
}
}