<?php
//提交過來的數據
$_POST = array('title'=>"aaaa","cid"=>12,"sort"=>0);
//分類是12
$cid = intval($_POST['cid']);php
//1.從數據庫中取30條數據,假設容許2個產品能夠同時出現
//其中數組中的key爲產品的編號,value爲產品分類編號
$lists = array(
"1"=>12,
"2"=>12,
"3"=>2,
"4"=>12,
"5"=>2,
"11"=>12,
"12"=>12,
"18"=>2,
"22"=>12,
"44"=>2,
"54"=>12,
"76"=>2,
"77"=>12,
"99"=>2,
"100"=>12,
"111"=>12,
"120"=>1,
"121"=>12,
"131"=>12,
);
//2.獲取位置
$ids = array_keys($lists);
$cids = array_values($lists);
$lists_length = count($lists);
//3.假設我開始要添加分類爲12的產品的時候
//#1#去判斷最後2個產品是不是12,若是都是12要進入排序算法
if($cid == $cids[$lists_length-1] && $cid == $cids[$lists_length-2]){
//無論位置在什麼地方,就從1開始
$insert_position=1;
//若是是ture的話就是一直循環下去
while(true){
//若是沒有插入位置的話,仍是要按順序添加啊
if($insert_position >= $lists_length){
break;
}
//想插入的位置
$insert_position_cid = $cids[$insert_position];
//若是插入的位置的產品分類跟要插入的產品分類同樣,繼續倒推
if($cid == $insert_position_cid){
$insert_position++;
continue;
}
//當前位置要看看啊,左邊產品分類是不是12
$beforCid = $cids[$insert_position-1];
$nextCid = $cids[$insert_position+1];
//若是其中一個有的話,就要繼續爭推了
if($cid == $beforCid || $cid == $nextCid){
$insert_position++;
continue;
}else{
echo $insert_position;
echo '<br/>';
break;
}
}
//經過位置去獲取id數據啦
$id = $ids[$insert_position-1];
//經過id去找當前的產品,而且設置排序
echo $id;
}else{
$_POST['sort'] = "是最後一個產品的排序加上"+1000;
}
算法