[英]Mapping array to new array
I have an array which has an array within it, and I want to create a new array for each of the array values of 'power'. 我有一个数组,里面有一个数组,我想为每个'power'数组值创建一个新数组。 What is the best way to do this? 做这个的最好方式是什么?
Original array: 原始数组:
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
)
)
Edit: Output array should increment gate started from 1 编辑:输出数组应从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
)
)
Continued for all 8 (5 and 3) power values, such that the resultant array is an array of 8 arrays. 对于所有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);
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
)
)
Note: 注意:
['beam']
and ['stid']
have been left off as per your sample. 根据您的样本, ['beam']
和['stid']
已被['stid']
。 Can easily be added if you need them. 可以根据需要轻松添加。
You can do this: 你可以这样做:
$newArray = [];
foreach ($oldArray as $element) {
foreach ($element['power'] as $power) {
$element['power'] = $power;
$newArray[] = $element;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.