跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

PHP怎么往间隔数组中添加数据

现有一数组如下: [site003] => array
( [0] => Array ( [key] => site003 [riqi] => 2016-06-14 [shijian] => 00 [num] => 1 ) [1] => Array ( [key] => site003 [riqi] => 2016-06-14 [shijian] => 04 [num] => 2 ) [2] => Array ( [key] => site003 [riqi] => 2016-06-14 [shijian] => 07 [num] => 6 ) )
由于时间shijian字段00到-04点中间没有01,02,03时间点,所以想对01,02,03时间点组装数据的num字段补充为0, 后者04-07中间时间点05,06也对num的时间点补充数组为0 麻烦各路高手指点迷津!小弟在此谢谢! 回复内容: 现有一数组如下: [site003] => array
( [0] => Array ( [key] => site003 [riqi] => 2016-06-14 [shijian] => 00 [num] => 1 ) [1] => Array ( [key] => site003 [riqi] => 2016-06-14 [shijian] => 04 [num] => 2 ) [2] => Array ( [key] => site003 [riqi] => 2016-06-14 [shijian] => 07 [num] => 6 ) )
由于时间shijian字段00到-04点中间没有01,02,03时间点,所以想对01,02,03时间点组装数据的num字段补充为0, 后者04-07中间时间点05,06也对num的时间点补充数组为0 麻烦各路高手指点迷津!小弟在此谢谢! 首先你需要确定你是否需要插入相关数据以及你插入的数据的方案,如果你不能确定中间缺失的shijian字段的始末的话,需要遍历这个数组去确定,然后将没有的字段加进去,然后用usort进行排序。 也可以在插入的时候决定你插入的位置,但是由于你插入会影响你数组的下标,所以还是上面第一个方法比较方便。 参考代码 立即学习 “ PHP免费学习笔记(深入) ”; PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载
$key, 'riqi' => $riqi, 'shijian' => getFullHour($hour), 'num' => 0, ]; } // 排序 // http://php.net/manual/zh/function.usort.php usort($input,function($a,$b){ return (intval($a['shijian']) $value) { $data[$key] = call_user_func($fill_date,$value,$key); } print_r($data); ?>
array_map usort 我说说我理解的思路,首先要先取你这个数组中
shijian
字段的最大值,然后根据最大值循环填充。 你试下以下方法, 主要采用的思路是: 1.先从给定的数组中过滤出最大的shijian值,同时存储已经存在的时间值, 2.添加小于最大shijian值且不存在数组中的数据
$srcArray = array (array( 'key' => 'site003', 'riqi'=> '2016-06-14', 'shijian' => 00, 'num' => 1, ) ,array ( 'key' => 'site003', 'riqi' => '2016-06-14', 'shijian' => 02, 'num'=> 2 ) ,array ( 'key' => 'site003', 'riqi' => '2016-06-14', 'shijian' => 04, 'num'=> 2 ) ); $data=array(-1); foreach($srcArray as $key=>$innerArray){ array_push($data,$innerArray['shijian']); if($innerArray['shijian'] > $data[0]){ $data[0] = intval($innerArray['shijian']); } } print_r($data); for($index = 0;$index<$data[0];$index++){ $exits= !array_search(intval($index),$data); if($exits){ $temp = array( 'key' => 'site003', 'riqi'=> '2016-06-14', 'shijian' => $index<10?'0'.$index:$index, 'num' => 0, ); array_push($srcArray,$temp); } } print_r($srcArray);

相关文章