我在详细说明数组编号时遇到了一个问题,如下所示
array (size=3)
0 =>
array (size=2)
'um' => float 1000
'kali' => string '2' (length=1)
1 =>
array (size=2)
'um' => float 2000
'kali' => string '5' (length=2)
2 =>
array (size=2)
'um' => float 5000
'kali' => string '1' (length=1)如果最终结果如下,我该怎么办?
array (size=7)
0 =>
array (size=2)
'um' => float 1000
'kali' => string '1' (length=1)
1 =>
array (size=2)
'um' => float 1000
'kali' => string '2' (length=1)
2 =>
array (size=2)
'um' => float 2000
'kali' => string '3' (length=1)
3 =>
array (size=2)
'um' => float 2000
'kali' => string '4' (length=1)
4 =>
array (size=2)
'um' => float 2000
'kali' => string '5' (length=1)
5 =>
array (size=2)
'um' => float 2000
'kali' => string '6' (length=1)
6 =>
array (size=2)
'um' => float 2000
'kali' => string '7' (length=1)
7 =>
array (size=2)
'um' => float 5000
'kali' => string '8' (length=1)String ['kali']循环的次数与前一个数组一样多
例如:['kali'] = 2循环2次,['kali'] = 5循环5次等等。
请开导一下这个案例
发布于 2019-06-16 15:18:35
简单的foreach循环可以这样做:
$cnt = 1;
foreach($arr as $e) {
for($i = 0; $i < $e["kali"]; $i++)
$res[] = array('um' => $e['um'], 'kali' => $cnt++);
}现场示例:3v4l
发布于 2019-06-16 15:18:01
您可以使用array_walk来实现此目的
$arr = [
['um' => 1000, 'kali' => '2'],
['um' => 2000, 'kali' => '5'],
['um' => 5000, 'kali' => '1']
];
$res = [];
array_walk($arr, function($v, $k) use (&$res){
$condition = ($v['kali'] == 5) ? 4 : ($v['kali']);
for($i=1;$i <= $condition;$i++){
$res[] = ['um' => $v['um'], 'kali' => count($res)+1];
}
}); https://stackoverflow.com/questions/56616843
复制相似问题