在foreach内跳跃位置

时间:2016-01-29 14:50:55

标签: php

我有这个foreach

foreach ($stats as $imageData) {
    $display[$i][0] = "<p style=\"text-align: center;\"><input type = \"checkbox\" id = \"check_" . $imageData["cid"] . "\" name = \"checkbox[]\" class=\"checkbox\" /></p>";
    $display[$i][1] = $imageInfo[$imageData["cid"]]["name"];
    $display[$i][2] = $imageInfo[$imageData["cid"]]["color"];
    $display[$i][3] = $imageInfo[$imageData["cid"]]["size"];
    $i++;
} 

我希望限制显示相同尺寸的图像。 例如,我定义limit = 2 因此,只会显示两个尺寸相同的图像。

我应该为每个尺码创建一个var来累积次数,我会重复相同的尺寸吗?

EDIT example:
Limit=2
img1 200*200
img2 200*200
img3 200*200
img4 100*500
img5 400*600

I should display:
img1 200*200
img2 200*200
img4 100*500
img5 400*600

2 个答案:

答案 0 :(得分:3)

你可以实现这样的限制:

$limit = 2;
$usedSizes = array();
foreach ($stats as $imageData) {
    $size = json_encode($imageInfo[$imageData["cid"]]["size"]);
    $usedSizes[$size] = isset($usedSizes[$size]) ? $usedSizes[$size]+1 : 1;
    if ($usedSizes[$size] > $limit) continue; // skip this image
    $display[$i][0] = "<p style=\"text-align: center;\">
                           <input type = \"checkbox\" id = \"check_" . $imageData["cid"] . "\" name = \"checkbox[]\" class=\"checkbox\" /></p>";
    $display[$i][1] = $imageInfo[$imageData["cid"]]["name"];
    $display[$i][2] = $imageInfo[$imageData["cid"]]["color"];
    $display[$i][3] = $imageInfo[$imageData["cid"]]["size"];
    $i++;
} 

JSON仅用于确保将size属性转换为字符串。对于代码的工作,此编码是否为JSON无关紧要。它必须是一个相同大小的字符串。

答案 1 :(得分:0)

正如评论中所建议的那样,您可以通过以下方式更正代码:

$sizeCheck = array();
foreach( $stats as $imageData )
{
    $key = "{$imageInfo[$imageData[cid]][size][w]}x{$imageInfo[$imageData[cid]][size][h]}";
    if( isset($sizeCheck[$key]) && $sizeCheck[$key]++>1 )
    {
        // Your Code Here
    }

}