1

我有一个完整的导演列表,但只想显示他们的唯一名称而不是重复的。看起来像的东西

导演A,导演B,导演C,...

不是

主任A,主任A,主任B,主任C,主任C,...

我尝试使用 array_unique 执行此操作,但它似乎没有将任何数据放入数组中。

我看到 foreach 循环显示了所有董事的姓名,但不知何故,数组 $alldirectors 保持为空。

这是我正在使用的代码。

<?php
$resume = get_posts(array(
          'post_type' =>'resume', 
          'numberposts'=>-1, 
          'meta_key' => 'director', 
          'meta_value' => '' 
));

$alldirectors = array();
foreach( $resume as $post ) {
      $director = get_post_meta( $post->ID, 'director', true );
 }

 $directors = array_unique($alldirectors);
 foreach ($directors as $director) {
  echo $directors;
 }
 ?>

我可能缺少一些简单的东西,但我是 php 和 wordpress 的新手,感谢您的所有帮助。

4

3 回答 3

10

尝试使用这样的标准查询

global $wpdb; (this is required when are you inside the function)

$values = $wpdb->get_results("SELECT DISTINCT meta_value FROM $wpdb->postmeta pm, $wpdb->post p WHERE meta_key  = 'director' and pm.post_id=p.ID  and p.post_type='resume' ",ARRAY_A);

print_r($values);
于 2013-11-29T21:18:48.213 回答
1

您没有存储董事姓名,$alldirectors因此它是空的,试试这个

$alldirectors = array();
foreach( $resume as $post ) {
    $alldirectors[]=   get_post_meta( $post->ID, 'director', true );
 }

然后使用你的循环

 $directors = array_unique($alldirectors);
 foreach ($directors as $director) {
  echo $directors;
 }
于 2013-11-29T20:56:08.347 回答
0

array_unique 会做你想做的事。但是,查看您的代码,您尚未将任何数据分配给 $alldirectors 数组。试试这条线:

$alldirectors = get_post_meta(blah blah); 

代替

$director = get_post_meta(blah blah);
于 2013-11-29T21:00:36.673 回答