我当前的数组
[attributes] => Array
(
[0] => Color, Black, 1
[1] => Size, S, 0
)
在foreach
上如何将此数组显示为类似
<ul>
<li class="alignleft">Color : Black</li>
<li class="alignright">$ 1.00</li>
<li class="alignleft">Size : S</li>
<li class="alignright">$ 0.00</li>
</ul>
我做了什么..
<ul>
<?php
$c = true;
foreach ($_SESSION['checkout']['attributes'] as $key => $value) {
echo '<li'.(($c=!$c)?' class="alignright"':' class="alignleft"').">$value</div>";
}
?>
</ul>
答案 0 :(得分:4)
只要你的所有数组条目都是这样,这应该有效:
<ul>
<?php
foreach ($_SESSION['checkout']['attributes'] as $key => $value) {
$arr = explode(",", $value);
echo '<li class="alignleft">' . $arr[0] . ' : ' . $arr[1] . '</li>';
echo '<li class="alignright">$' . number_format($arr[2], 2) . '</li>';
}
?>
</ul>
答案 1 :(得分:3)
如果我必须输出一个简短的html内容,我个人更喜欢使用sprintf。当然,为了便于阅读。
<ul>
<?php
foreach ($_SESSION['checkout']['attributes'] as $key => $row) {
list($label, $type, $price) = explode(", ", $row);
echo sprintf('
<li class="alignleft">%s : %s</li>
<li class="alignright">$ %.2f </li>
', $label, $type, $price);
}
?>
</ul>
答案 2 :(得分:2)
解决方案是:
<ul>
<?php
foreach ($_SESSION['checkout']['attributes'] as $key => $value) {
$val = explode(', ', $value);
echo '<li class="alignleft">'. $val[0]. ' : '. $val[1]. '</li>';
echo '<li class="alignright">$ '. number_format($val[2], 2). '</li>';
}
?>
</ul>
然而,更好的方法是,如果您可以对阵列进行更多控制并使用以下内容:
Array(
[0] => Array(
['label'] => 'Color',
['value'] => 'Black',
['price'] => 1
),
[1] => Array(
['label'] => 'Size',
['value'] => 'S',
['price'] => 0
)
)
然后你不需要爆炸$ value,你可以使用$value['label']
而不是$val[0]
和$value['value']
代替$val[1]
等...