我在wordpress的管理区域遇到了这个类的问题。
我想返回foreach的值,但不幸的是返回一个空变量!
如果我在foreach中使用print_r一切正常!
你能帮我理解我错在哪里吗?
这是我的代码:
class MyClass{
function __construct(){
add_action( 'admin_init',array( $this, 'getPostType' ) );
}
function getPostType(){
$args = array(
'public' => true,
'_builtin' => false
);
$output = 'names';
$operator = 'and';
$post_types = get_post_types( $args, $output, $operator );
$types = array();
foreach($post_types as $postype){
$types[] = array(
'value' => $postype,
);
return $types;
}
}
}
$var = new MyClass();
foreach($var->getPostType() as $type){
echo $type;
}
提前致谢并抱歉我的英语不好!
更改
class MyClass{
function __construct(){
add_action( 'admin_init',array( $this, 'getPostType' ) );
}
function getPostType(){
$args = array(
'public' => true,
'_builtin' => false
);
$output = 'names';
$operator = 'and';
$post_types = get_post_types( $args, $output, $operator );
$types = array();
foreach($post_types as $postype){
$types[] = array(
'value' => $postype,
);
} return $types;
}
}
$var = new MyClass();
print_r($var->getPostType());
我明白了:Array()
$ post_types 会返回正确的值。
调试:
class MyClass{
function __construct(){
add_action( 'admin_init',array( $this, 'getPostType' ) );
}
function getPostType(){
$args = array(
'public' => true,
'_builtin' => false
);
$output = 'names';
$operator = 'and';
$post_types = get_post_types( $args, $output, $operator );
var_dump($post_types); // array(1) { ["book"]=> string(4) "book" }
$types = array();
foreach($post_types as $postype){
$types[] = array(
'value' => $postype,
);
var_dump($postype); // string(4) "book"
} return $types;
}
}
答案 0 :(得分:0)
我认为你不需要整个foreach。我查看了这本神奇的书,找到了你可以尝试的reset()
。
$types = array( 'value' => reset($post_types));