我有一个循环,它计算所有产品并使用特殊的方法打印它们。每种方法的大小是每种方法的最大循环。 这就是我需要的:
loop=1 -> methode=print_box_simple
loop=2 -> methode=print_box_5
loop=3 -> methode=print_box_5
loop=4 -> methode=print_box_5
loop=5 -> methode=print_box_5
loop=6 -> methode=print_box_5
loop=7 -> methode=print_box_2_full
loop=8 -> methode=print_box_2_full
loop=9 -> methode=print_box_4
loop=10 -> methode=print_box_4
循环是产品的计数器。我需要以某种方式总结大小。下面是我开始使用的代码:
// Get layout by position
$box_layout = self::getLayoutByPosition(self::$layout, $counter);
...
private function getLayoutByPosition($layout, $counter) {
// The necessary code
}
// The layout array
private $layout = array( 1=>array('methode'=>'print_box_simple', 'size'=>1),
2=>array('methode'=>'print_box_5', 'size'=>5),
3=>array('methode'=>'print_box_2_full', 'size'=>2),
4=>array('methode'=>'print_box_4', 'size'=>4),
5=>array('methode'=>'print_box_2_half', 'size'=>2)
);
我希望清楚我的意思。
答案 0 :(得分:0)
我认为这样的事情应该有效:
// if you need a certain limit of operations then:
$layout_limit = 10;
$counter = 0;
foreach ($this->layout as $item) {
for ($i = 0; $i < $item['size']; $i++) {
// calling method, named in `methode` key
$item['methode']();
$counter++;
if ($counter == $layout_limit) {
break 2; // 2 so as to break `for` and `foreach`
}
}
}
答案 1 :(得分:0)
你可以试试这个
$i = 0;
foreach($array as $key => $sub_array){
if($sub_array['size'] > 0){
for($j = 0 ; $j < $sub_array['size'] ; $j++){
$i++;
echo 'Loop = '.$i.' -> methode = '.$sub_array['methode'].'<br/>';
}
}
}