从可重复的自定义字段分解数组

时间:2013-09-12 作者:Mac Pesher

我有一个来自可重复自定义字段的数组。使用vardump打印时,输出为。。。

var_dump($affman);
这是结果。。。

 array(3) {
    [0] => array(4) {
        [0] => string(74) "Crak Affiliates|[email protected]|N/A|418-977-3169|crak_affiliates" 
        [1] => string(0) "" 
        [2] => string(0) "" 
        [3] => string(0) ""
    } [1] => array(4) {
        [0] => string(74) "Crak Affiliates|[email protected]|N/A|418-977-3169|crak_affiliates" 
        [1] => string(0) "" 
        [2] => string(0) "" 
        [3] => string(0) ""
    } [2] => array(4) {
        [0] => string(74) "Crak Affiliates|[email protected]|N/A|418-977-3169|crak_affiliates" 
        [1] => string(0) "" 
        [2] => string(0) "" 
        [3] => string(0) ""
    }
} 
我想分解每个条目并将输出自定义到列表。。。

下面是我的代码:

<?php
$affman = get_post_meta($post->ID, "affiliatemanager", false); 
if ($affman[0]=="") { ?>

<?php } else { ?>
<li><u>Finance Manager:</u><br>
<?php foreach($affman as $am) {
$temp = explode("|", "$am");
  $am_name = $temp[0];
  $am_email = $temp[1];
  $am_aim = $temp[2];
  $am_phone = $temp[3];
  $am_skype = $temp[4];
?>

Name: <?php echo $am_name ?>|Email: <?php echo $am_email ?>|AIM: <?php echo $am_aim ?>|Phone: <?php echo $am_phone ?>|Skype: <?php echo $am_skype ?><br>

<?php } ?></li><?php } ?>
上面的代码无法显示我想要的输出。请帮我修一下。非常感谢。

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

这是一个PHP问题,而不是WordPress问题。

尝试替换

$temp = explode( "|", $am );
使用

$temp = explode( "|", $am[0] );
$am 是一个数组。

您还应该考虑使用isset() 检查数组项是否存在。

这里有一个想法:

<?php

$affman = get_post_meta( $post->ID, \'affiliatemanager\', FALSE ); 

if ( is_array( $affman ) ){

    $li = \'\';
    foreach($affman as $am) {
        $temp = array();

        if( isset( $am[0] ) )
            $temp = explode( \'|\', $am[0] );

        if( count( $temp ) === 5 ){
            $am_name  = $temp[0];
            $am_email = $temp[1];
            $am_aim   = $temp[2];
            $am_phone = $temp[3];
            $am_skype = $temp[4];
            $li .= sprintf( \'<li>Name: %s | Email: %s | AIM: %s | Phone: %s | Skype: %s </li>\', 
                            $am_name, 
                            $am_email, 
                            $am_aim, 
                            $am_phone, 
                            $am_skype 
                        ); 
        }
    }
    printf( \'<ul>%s</ul>\', $li );
}

?>

结束

相关推荐

private functions in plugins

我开发了两个插件,其中一个功能相同(相同的名称,相同的功能)。当试图激活两个插件时,Wordpress会抛出一个错误,因为它不允许我以相同的名称定义函数两次。有没有一种方法可以使这个函数只对插件私有,而不使用面向对象编程,也不简单地重命名函数?我不想使用OOP,因为我首先要学习它。此外,我不想重命名该函数,因为我可能也想在其他插件中使用它,而重命名感觉不太合适。