使用foreach
,explode()
和ucfirst()
:
foreach( $custom_info as $k => $v){
$parts = explode( '_', $k);
if( count($parts) != 2){
throw new Exception( 'Invalid format of key: ' . $k);
}
if( $parts[1] != 'text'){
continue;
}
// Build label
$key = $parts[0] . '_type';
$label = '';
if( isset( $custom_info[ $key])){
$label = $custom_info[ $key];
} else {
$label = ucfirst( $parts[0]);
}
echo '<span>' . htmlspecialchars( $label) . '</span><div>'
. htmlspecialchars( $v) . '</div>';
}
或者你可以用explode()
这样的函数替换(它也支持long_key_text
,使用strrpos()
):
function getParts( $key){
$pos = strrpos( $key, '_');
if( $pos === false){
return false; // or array or so
}
return array(
substr( $key, 0, $pos),
sbustr( $key, $pos+1)
);
}
根据 Elbys 的评论和您的回答,最简单的方法是:
$custom_info = array (
"Date" => "20/12/2012",
"Place" => "NY"
) ;
foreach( $custom_info as $k => $v){
echo '<span>' . htmlspecialchars( $k) . '</span><div>'
. htmlspecialchars( $v) . '</div>';
}