我有一个数组,其中有一个数组,我想为“power”的每个数组值创建一个新数组。做这个的最好方式是什么?
原始数组:
Array
(
[0] => Array
(
[date] => 2019-09-16 15:16:03
[stid] => 64
[beam] => 1
[power] => {1,3,7,8,9}
[gates] => 5
)
[1] => Array
(
[date] => 2019-09-16 15:17:03
[stid] => 64
[beam] => 1
[power] => {14,15,16}
[gates] => 3
)
)
编辑:输出数组应该从 1 开始递增门
Array
(
[0] => Array
(
[date] => 2019-09-16 15:16:03
[gate] => 1
[power] => 1
)
[1] => Array
(
[date] => 2019-09-16 15:16:03
[gate] => 2
[power] => 3
)
[2] => Array
(
[date] => 2019-09-16 15:16:03
[gate] => 3
[power] => 7
)
[3] => Array
(
[date] => 2019-09-16 15:16:03
[gate] => 4
[power] => 8
)
[4] => Array
(
[date] => 2019-09-16 15:16:03
[gate] => 5
[power] => 9
)
[5] => Array
(
[date] => 2019-09-16 15:17:03
[gate] => 1
[power] => 14
)
[6] => Array
(
[date] => 2019-09-16 15:17:03
[gate] => 2
[power] => 15
)
[7] => Array
(
[date] => 2019-09-16 15:17:03
[gate] => 3
[power] => 16
)
)
对所有 8 个(5 和 3)个幂值继续,这样得到的数组是一个包含 8 个数组的数组。
# Original Data Structure
$arr =
[
[
'date' => '2019-09-16 15:16:03',
'stid' => 64,
'beam' => 1,
'power' => '{1,3,7,8,9}',
'gates' => 5
],
[
'date' => '2019-09-16 15:17:03',
'stid' => 64,
'beam' => 1,
'power' => '{14,15,16}',
'gates' => 3
]
];
$output = [];
foreach ($arr as $a)
{
$gateCount = 0;
foreach (explode(',', trim($a['power'], '{}')) as $p)
{
$output[] = [
'date' => $a['date'],
'gate' => $gateCount++ % $a['gates'] + 1,
'power' => $p
];
}
}
print_r($output);
输出:
Array
(
[0] => Array
(
[date] => 2019-09-16 15:16:03
[gate] => 1
[power] => 1
)
[1] => Array
(
[date] => 2019-09-16 15:16:03
[gate] => 2
[power] => 3
)
[2] => Array
(
[date] => 2019-09-16 15:16:03
[gate] => 3
[power] => 7
)
[3] => Array
(
[date] => 2019-09-16 15:16:03
[gate] => 4
[power] => 8
)
[4] => Array
(
[date] => 2019-09-16 15:16:03
[gate] => 5
[power] => 9
)
[5] => Array
(
[date] => 2019-09-16 15:17:03
[gate] => 1
[power] => 14
)
[6] => Array
(
[date] => 2019-09-16 15:17:03
[gate] => 2
[power] => 15
)
[7] => Array
(
[date] => 2019-09-16 15:17:03
[gate] => 3
[power] => 16
)
)
笔记:
['beam']
并['stid']
已根据您的样品停止使用。如果需要,可以轻松添加。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句