我认为解决方案有点容易,当然它是在逃避我。
我有两个表,并且他们正在一个具有相同值的字段上加入它们:
示例记录:
art0001,
art0001,
art0001,
art0002,
art0002,
art0003
我想要做的是附加一个数字来计算每个副本,然后像这样回复:
art0001-1,
art0001-2,
art0001-3
art0002-1,
art0002-2,
art0003-1
我想出了这段代码,但输出只是添加了一个数字,但是在找到新的副本时没有重新启动。
$query = mysql_query( "SELECT * FROM product_image JOIN my_art ON product_folder = product_code" );
if( !$query ) {
die( mysql_error() );
}
$row = mysql_fetch_array($query);
$i = 0;
while($row = mysql_fetch_array($query)) {
if($row['COUNT(base_folder)'] < 1 && $row['image_type'] == 'B' && $row['view'] == 'FF') {
echo $row['base_folder']."-".$i++;
echo "<br />";
}
}
任何人都可以帮助我并告诉我我做错了吗?
答案 0 :(得分:2)
如果您想单独为每个“产品”保留一个计数器,则必须检查产品在循环中是否仍然相同,或者是否是另一个产品。请注意:查询中的order by子句是必需的。
<?php
$query = mysql_query( "SELECT * FROM product_image JOIN my_art ON product_folder = product_code ORDER BY product_folder" );
if( !$query ) {
die( mysql_error() );
}
$row = mysql_fetch_array($query);
$i = 0;
$last = '';
while($row = mysql_fetch_array($query)) {
if( $row['COUNT(base_folder)'] < 1 && $row['image_type'] == 'B' && $row['view'] == 'FF' ) {
if( $last !== $row['basefolder'] ) {
$i = 0;
}
echo $row['base_folder']."-".$i++;
echo "<br />";
$last = $row['basefolder'];
}
}
答案 1 :(得分:1)
您可以使用数组来跟踪项目计数:
<?php
$test_data = array(
'art0001',
'art0001',
'art0001',
'art0002',
'art0002',
'art0003',
);
$item_count = array();
foreach($test_data as $item){
if( isset($item_count[$item]) ){
$item_count[$item]++;
}else{
$item_count[$item] = 1;
}
echo $item . '-' . $item_count[$item] . PHP_EOL;
}
答案 2 :(得分:0)
这是一个简单的函数,用于获取具有重复值的数组,并仅向重复的名称附加数字。
Array
(
[0] => samename
[1] => namesame
[2] => samename
[3] => namename
[4] => namename
[5] => notsame
[6] => samename
)
Array
(
[0] => samename
[1] => namesame
[2] => samename(2)
[3] => namename
[4] => namename(2)
[5] => notsame
[6] => samename(3)
)
function uniqueNames($array){
$alreadyoccured=array();
$newarray=array();
foreach($array as $arr){
if(array_key_exists($arr,$alreadyoccured)){
$alreadyoccured[$arr]=$alreadyoccured[$arr]+1;
$newarray[]=$arr.'('.$alreadyoccured[$arr].')';
}else{
$alreadyoccured[$arr]=1;
$newarray[]=$arr;
}
}
return $newarray;
}