从foreach返回数组

时间:2015-03-30 14:01:45

标签: php arrays wordpress foreach

我在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;
     }
}

1 个答案:

答案 0 :(得分:0)

我认为你不需要整个foreach。我查看了这本神奇的书,找到了你可以尝试的reset()

$types = array( 'value' => reset($post_types));