将数组输出到一个表格单元中

时间:2016-05-17 作者:AHinson

我试图将数组输出到一个表单元格中。以下是我现在拥有的内容的截断版本:

$prerequisites = get_post_meta($post->ID, \'opl_prerequisites\', true);

$output .= \'<td>\';
              if(count($prerequisites) === 1){
                foreach( $prerequisites as &$prerequisite ):
                  $prerequisite_object = get_post( $prerequisite );
                  $output .= $prerequisite_object->post_title;
                endforeach;
              } else {
              foreach( $prerequisites as &$prerequisite ):
                $prerequisite_object = get_post( $prerequisite );
                $output .= $prerequisite_object->post_title.\', \';
              endforeach;
              }
  $output .= \'</td>\';
这基本上返回了我想要的东西,尽管我知道我如何称呼它肯定存在一些问题。我只希望数组的内容返回到一个由逗号分隔的单元格中,而不希望在最后有逗号。当前,如果数组中有1个以上的项,则此代码会在末尾加一个逗号。我正试图找出几个问题:

在第一个IF语句中,我有一个foreach语句,因为我似乎无法让它显示数组中的数据,除非我这样调用它,即使数组中只有一个项。有没有一种更快捷的方式来获取post\\u标题?当我这样称呼它的时候$output .= $prerequisites[0]; 它只给我post ID而不是post\\u标题。

我把implode(); php函数,但我似乎找不到它在这种情况下的确切用途。我觉得这是我想做的事情的捷径。

如果您有任何帮助,我们将不胜感激。提前感谢!

2 个回复
最合适的回答,由SO网友:AntonChanning 整理而成

或者,制作一个标题数组,然后使用implode...

$prerequisites = get_post_meta($post->ID, \'opl_prerequisites\', TRUE);
$titles = array();
foreach( $prerequisites as $prerequisite ){
  $titles[] = get_the_title( $prerequisite );
}

$output .= \'<td>\'.implode(",", $titles).\'</td>\';

SO网友:BillK

通过true 作为第三个参数get_post_meta() 表示只返回一个项目。通过false, 或者将其留空,以获取匹配元项的数组。

这个foreach 下面的循环应该有效,然后删除多余的逗号(如果存在)。

$prerequisites = get_post_meta($post->ID, \'opl_prerequisites\', FALSE);

$td_output = \'<td>\';
foreach( $prerequisites as $prerequisite ){
  $td_output .= get_the_title( $prerequisite ) . \', \';
}
if( strlen($td_output) > 4 ){
  // remove trailing comma if any prerequisite titles added
  $td_output = substr( $td_output,  0, -2 ); 
}
$td_output .= \'</td>\';
$output .= $td_output;