好的,我遇到了一个小问题。
我对PHP / JSON数组有点了解,但更多关于SQL。
我正在使用foreach语句迭代这个数组,但是如何限制它只显示10个结果呢?
$Address = $RPC2->getaddressesbyaccount($_SESSION['email']);
foreach($Address as $Another) {
echo '<b>' . $Another . '</b><br /><br />';
}
它工作正常但是当有10多个结果时它会弄乱页面上的CSS。
如何让它只显示10个结果?
答案 0 :(得分:5)
你可以打破循环
$i = 0;
foreach($Address as $Another) {
$i++;
echo '<b>' . $Another . '</b><br /><br />';
if($i==10) break;
}
但这不是最干净的解决方案。
如果您的$Address
数组有数字键,则可以使用for循环:
$nb = sizeof($Address) < 10 ? sizeof($Address) : 10;
for($i = 0; $i < $nb; $i++){
echo '<b>' . $Address[$i] . '</b><br /><br />';
}
如果$ Address数组的长度小于10,则使用 min()
函数。
答案 1 :(得分:4)
如果getaddressesbyaccount返回数组,则可以执行以下操作:
foreach(array_slice($Address, 0, 10) as $Another) {
echo '<b>' . $Another . '</b><br /><br />';
}
答案 2 :(得分:2)
你可以计算并突破foreach()
,但为什么不只是:
for($i=0; $i<10 && $i<=count($Address); $i++) {
echo '<b>' . $Address[$i] . '</b><br /><br />';
}
假设数字键。
答案 3 :(得分:2)
您可以非常轻松地使用for
循环:
$Address = $RPC2->getaddressesbyaccount($_SESSION['email']);
$loopTo = min(count($Address), 10);
for($i = 0; $i < $loopTo; $i++)
{
echo '<b>'.$Address[$i].'</b><br /><br />';
}
答案 4 :(得分:1)
array_slice
变体是一个很好的通用解决方案,因为它在便利性之间取得了很好的平衡(只有一个表达式可以自然地使用foreach
)和通用性(不依赖于数组键是顺序整数。)
但是,如果你想从原始数组中取出更大的切片,那么array_slice
将预先分配所有切片,消耗内存。如果您只需要迭代就不需要这样做,那么更好的选择是LimitIterator
:
foreach (new LimitIterator($Address, 0, 10) as $Another) {
echo '<b>' . $Another . '</b><br /><br />';
}
答案 5 :(得分:1)
我认为这应该适合您的情况
foreach(array_slice($Address, 0, 10) as $Another) {
echo '<b>' . $Another . '</b><br /><br />';
}
答案 6 :(得分:0)
向foreach
添加密钥以获取数组索引。然后在达到10时终止循环。
foreach($Address as $i => $Another) {
if ($i == 10) {
break;
}
echo '<b>' . $Another . '</b><br /><br />';
}
或者使用array_slice()
来获取数组的前10个元素:
foreach(array_slice($Address, 0, 10) as $Another) {
echo '<b>' . $Another . '</b><br /><br />';
}