数据来自Wordpress Metabox,以单个长数组的形式。
我在元框中插入的数据如下所示:
Rhine Riesling1|0,75 l|9,50 &euro
Rhine Riesling2|0,75 l|9,50 &euro
Rhine Riesling3|0,75 l|9,50 &euro
Rhine Riesling4|0,75 l|9,50 &euro
最终输出应如下所示:
<ul class="listmenuitems" id="listingmenu_1">
<li><p>Rhine Riesling1 <span>0,75 l</span></p> <span class="listmenuprice">9,50 €</span></li>
<li><p>Rhine Riesling2 <span>0,75 l</span></p> <span class="listmenuprice">9,50 €</span></li>
<li><p>Rhine Riesling3 <span>0,75 l</span></p> <span class="listmenuprice">9,50 €</span></li>
<li><p>Rhine Riesling4 <span>0,75 l</span></p> <span class="listmenuprice">9,50 €</span></li>
</ul>
考虑分隔符
|
,我如何将数组值切成碎片,然后循环遍历它以创建格式正确的<li><p>
?
我现在正在阅读有关 PHP 的
explode()
。
list($name,$content,$price) = explode("|",$line)
printf('<li><p>%s<span>%s</span></p> <span class="listmenuprice">%s</span></li>',$name,$content,$price)
您可以使用 PHP 爆炸命令。 http://php.net/manual/en/function.explode.php
循环遍历数组,在每个条目上调用:explode("|", $entry); 然后你可以像这样打印出你想要的内容:
$input_arr[];
echo '<ul class="listmenuitems" id="listingmenu_1">';
for($i=0;i<sizeof($input_arr);$i++) {
$e = explode("|",$input_arr[$i]);
echo "<li><p>" . $e[0] . "<span>" . $e[1] . "</span></p> <span class=\"listmenuprice\">" . $e[2] . "</span></li>";
}
请注意,存在错误检查,并且假设您有一个完整且格式良好的数组输入。
更新添加 foreach ;) 如果您喜欢 foreach 循环...
$input_arr[];
echo '<ul class="listmenuitems" id="listingmenu_1">';
foreach($input_arr as $i) {
$e = explode("|",$i);
echo "<li><p>" . $e[0] . "<span>" . $e[1] . "</span></p> <span class=\"listmenuprice\">" . $e[2] . "</span></li>";
}
使用
vprintf()
将允许您干净地声明 HTML 模板字符串并立即使用从 explode()
返回的数组。
代码:(演示)
$array = [
'Rhine Riesling1|0,75 l|9,50 &euro',
'Rhine Riesling2|0,75 l|9,50 &euro',
'Rhine Riesling3|0,75 l|9,50 &euro',
'Rhine Riesling4|0,75 l|9,50 &euro',
];
echo '<ul class="listmenuitems" id="listingmenu_1">' . "\n";
foreach ($array as $psv) { // pipe-separated values
vprintf(
"\t" . '<li><p>%s <span>%s</span></p> <span class="listmenuprice">%s;</span></li>' . "\n",
explode('|', $psv)
);
}
echo '</ul>';
输出:
<ul class="listmenuitems" id="listingmenu_1">
<li><p>Rhine Riesling1 <span>0,75 l</span></p> <span class="listmenuprice">9,50 €</span></li>
<li><p>Rhine Riesling2 <span>0,75 l</span></p> <span class="listmenuprice">9,50 €</span></li>
<li><p>Rhine Riesling3 <span>0,75 l</span></p> <span class="listmenuprice">9,50 €</span></li>
<li><p>Rhine Riesling4 <span>0,75 l</span></p> <span class="listmenuprice">9,50 €</span></li>
</ul>
假设你的数组是
$metabox;
然后
echo '<ul class="listmenuitems" id="listingmenu_1">';
foreach($metabox as $val)
{
$petabox=explode("|",$val);
echo '<li><p>'.$petabox[0].'<span>'.$petabox[1].'</span></p> <span class="listmenuprice">'.$petabox[2].'</span></li>';
}
echo '</ul>';