我使用WP Alchemy类处理一些WordPress代码,我试图将页面模板中使用的元值作为逗号分隔列表进行回忆。但是当WP Alchemy Meta Boxes将值存储到域中时,它们不会以分隔符或空格保存,因此它非常类似于:onetwothreefourfive ...
这是我到目前为止所拥有的:
<?php $meta = get_post_meta(get_the_ID(), $custom_metabox->get_the_id(), TRUE); ?>
<li>Via: <?php foreach ($meta['g2m_via'] as $link) { ?><a href="<?php echo $link['g2m_via-link']; ?>">
<?php
$prefix = ', ';
$words = array();
$words[] = $link['g2m_via-title'];
$words = array_map("unserialize", array_unique(array_map("serialize", $words)));
for($i = 0; $i < count($words); $i++){ $fruitlist = implode(', ', $words); print_r($fruitlist); }
?></a><?php } ?></li>
$ link ['g2m_via-title']只是存储在元字段中的链接的名称,即Link1将是名称,google ,, com将是链接(这里不重要,我有那个工作)。其他变量都在那里。 $ prefix变量什么都不做,它意味着充当分隔符,例如:$ val。= $ prefix。 ''$ link ['g2m_via-title']; 。 '';但是,它会导致:Link1,Link 1,Link 2,Link 1,Link 2,Link 3。
到目前为止,使用该代码,我已经得到了最接近我想要的内容:
Link1Link2Link3
但它必须是:Link1, Link2, Link3
,依此类推,而不会在最后一个链接标题上使用逗号。
var_dump($ link)的输出:
array(2) {
["g2m_via-title"]=> string(7) "JoyStiq"
["g2m_via-link"]=> string(22) "joystiq.com";
}JoyStiq
array(2) {
["g2m_via-title"]=> string(9) "GrindGadget"
["g2m_via-link"]=> string(16) "grindgadget.com";
} GrindGadget
array(2) {
["g2m_via-title"]=> string(13) "Engadget"
["g2m_via-link"]=> string(13) "engadget.com";
} Engadget
我希望它看起来如此[“g2m_via-title”]将停止重复:
array[1] {
["g2m_via-title"]=> "JoyStiq"
["g2m_via-link"]=> "joystiq.com";
}
array[2] {
["g2m_via-title"]=> "GrindGadget"
["g2m_via-link"]=> "grindgadget.com";
}
array[3] {
["g2m_via-title"]=> "Engadget"
["g2m_via-link"]=> "engadget.com";
}
我尝试过的无数其他代码中的3个:http://pastebin.com/wa0R8sDw。
答案 0 :(得分:1)
假设这个数据结构:
$links = array(
array(
"g2m_via-title" => "JoyStiq",
"g2m_via-link" => "joystiq.com"
),
array(
"g2m_via-title" => "GrindGadget",
"g2m_via-link" => "grindgadget.com"
),
array(
"g2m_via-title" => "Engadget",
"g2m_via-link" => "engadget.com"
)
);
这样做:
$output = array();
foreach ($links as $link) {
$output[] = sprintf('<a href="http://%s">%s</a>',
$link['g2m_via-link'],
htmlentities($link['g2m_via-title']));
}
echo join(', ', $output);
这将在PHP 5.3 +:
中echo join(', ', array_map(function ($link) {
return sprintf('<a href="http://%s">%s</a>',
$link['g2m_via-link'],
htmlentities($link['g2m_via-title']));
}, $links));