![](/img/trans.png)
[英]when two array having related value on same index of each array how to get relation when one array get sort ???PHP
[英]having same amount of value in each php array
我有以下数组:
Array
(
[0] => Array
(
[data] => Array
(
[0] => 2015-07-21
[1] => 2015-07-22
[2] => 2015-07-23
[3] => 2015-07-24
)
)
[1] => Array
(
[name] => 3389 Remote Desktop
[data] => Array
(
[2015-07-21] => 37
[2015-07-22] => 21
[2015-07-23] => 38
[2015-07-24] => 14
)
)
[2] => Array
(
[name] => 80 HTTP
[data] => Array
(
[2015-07-21] => 22
[2015-07-22] => 2
// <- here is missing [2015-07-23] => 0
// <- here is missing [2015-07-24] => 0
)
)
[4] => Array
(
[name] => 21 FTP
[data] => Array
(
// <- here is missing [2015-07-21] => 0
[2015-07-22] => 1
[2015-07-23] => 20
// <- here is missing [2015-07-24] => 0
)
)
)
什么功能可以实现添加缺少的元素? 到目前为止,我大致了解:
$newarray = array();
$count = count($arr[0][data]);
foreach($arr as $key => $subarr) {
for ($i = 1; $i <= $count; $i++) {
if (in_array($i, $subarr)) $newarray[$key][$i - 1] = $i;
else $newarray[$key][$i - 1] = 0;
}
}
它部分起作用并给出:
Array
(
[0] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
[3389 Remote Desktop] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
[80 HTTP] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
[21 FTP] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
)
)
但是我需要具有与初始数组完全相同的结构。 任何帮助欢迎。
$res = [$array[0]];
// make default array with all zeros
$default = array_combine($array[0]['data'], array_fill(0,count($array[0]['data']),0));
// make new array changing default values with present
for($i = 1; $i < count($array); $i++ )
$res[] = ['name' => $array[$i]['name'],
'data' => array_replace($default, $array[$i]['data'])];
print_r($res);
如果您始终在第一个元素上定义所有日期,则可以这样进行:
$data = array(); // your array
$allDates = $data[0]['data'];
for($i=1; $i<count($data); $i++)
{
foreach($allDates as $reqDate)
{
if(!array_key_exists($reqDate, $data[$]['data'])
{
$data[$]['data'][$reqDate] = 0;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.