跳跃位置在里面


Jump position inside 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因此,只会显示 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

您可以实现如下限制:

$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 仅用于确保将大小属性转换为字符串。此编码是否为 JSON 与代码的工作无关。它只需要是一个大小相等的字符串。

如注释中所建议的,您可以通过以下方式更正代码:

$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
    }
}