我试图将数组输出到一个表单元格中。以下是我现在拥有的内容的截断版本:
$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函数,但我似乎找不到它在这种情况下的确切用途。我觉得这是我想做的事情的捷径。
如果您有任何帮助,我们将不胜感激。提前感谢!
最合适的回答,由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;