我有这个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
答案 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
}
}