我有一系列库存(ITEMS A&B)
A和B项目以1 x A和2 x B的形式出售.
这些项目还具有各种属性,这些属性不会影响它们如何分配到集合中.
例如:
$inventory=array(
array("A","PINK"),
array("A","MAUVE"),
array("A","ORANGE"),
array("A","GREY"),
array("B","RED"),
array("B","BLUE"),
array("B","YELLOW"),
array("B","GREEN"),
array("B","BLACK")
);
Run Code Online (Sandbox Code Playgroud)
我想重新分配数组$ inventory以创建$ set(s)
$set[0] => Array
(
[0] => array(A,PINK)
[1] => array(B,RED)
[2] => array(B,BLUE)
)
$set[1] => Array
(
[0] => array(A,MAUVE)
[1] => array(B,YELLOW)
[2] => array(B,GREEN)
)
$set[2] => Array
(
[0] => array(A,ORANGE)
[1] => array(B,BLACK)
[2] => NULL
)
$set[3] => Array
(
[0] => array(A,GREY)
[1] => NULL
[2] => NULL
)
Run Code Online (Sandbox Code Playgroud)
如你看到的.这些项目按照它们在清单中的显示顺序重新分配,以创建一组1 x A和2 x B.创建集合时颜色无关紧要.但是我需要能够找到在创建$ set数组之后进入哪个颜色的颜色.创建集直到所有库存都用完为止.如果库存项目不存在以进入集合,则会插入NULL值.
提前致谢!
我假设一切都A's在一切之前B's:
$inventory=array(
array("A","PINK"),
array("A","MAUVE"),
array("A","ORANGE"),
array("A","GREY"),
array("B","RED"),
array("B","BLUE"),
array("B","YELLOW"),
array("B","GREEN"),
array("B","BLACK")
);
for($b_start_index = 0;$b_start_index<count($inventory);$b_start_index++) {
if($inventory[$b_start_index][0] == 'B') {
break;
}
}
$set = array();
for($i=0,$j=$b_start_index;$i!=$b_start_index;$i++,$j+=2) {
isset($inventory[$j])?$temp1=$inventory[$j]:$temp1 = null;
isset($inventory[$j+1])?$temp2=$inventory[$j+1]:$temp2 = null;
$set[] = array( $inventory[$i], $temp1, $temp2);
}
Run Code Online (Sandbox Code Playgroud)