php批量处理多维数组替换,删除部分键值
来源:互联网 发布:普陀区数据恢复 编辑:程序博客网 时间:2024/06/05 14:30
<?php$arr1 = json_decode(file_get_contents('D:/phpStudy/WWW/mfstudy.com/mfxxapi/saveCarDetail.json'), true);$unset = array('initial', 'salestate', 'depth');echo "<pre>";print_r(unsetMultiKeys($unset, 'logo', 'default.png', $arr1));print_r($arr1);echo "</pre>";exit;/** * 批量删除替换多维数组里面不需要的数组键值 * @param array $unset 不需要的键名数组 * @param string $needle 需要被替换的键名下标 * @param string $change 需要换成的键值,本例中logo为空的替换为default.png * @param array $array 需要被处理的数组 * @return array 返回被处理好的数组 */function unsetMultiKeys($unset, $needle, $change, $array) { $arrayIterator = new \RecursiveArrayIterator($array); $recursiveIterator = new \RecursiveIteratorIterator($arrayIterator, \RecursiveIteratorIterator::SELF_FIRST); foreach ($recursiveIterator as $key => $value) { foreach ($unset as $v) { if (is_array($value) && array_key_exists($v, $value)) { // 删除不要的值 unset($value[$v]); } } if (is_array($value) && array_key_exists($needle, $value)) { if (empty($value[$needle])) { $value[$needle] = $change; } } // 获取当前层级深度,以备后面返回, 保存修改 $currentDepth = $recursiveIterator->getDepth(); for ($subDepth = $currentDepth; $subDepth >= 0; $subDepth--) { // 获取当前层级迭代器 $subIterator = $recursiveIterator->getSubIterator($subDepth); // 如果我们在想要改变的那个层级,就可以进行删除操作了,最后返回的的是复制的数组 $subIterator->offsetSet($subIterator->key(), ($subDepth === $currentDepth ? $value : $recursiveIterator->getSubIterator(($subDepth + 1))->getArrayCopy())); } } return $recursiveIterator->getArrayCopy();}
阅读全文
1 0
- php批量处理多维数组替换,删除部分键值
- PHP递归多维数组替换键名和键值
- php多维数组按某一个键值排序
- php递归处理多维数组
- 删除多维数组里面空值或指定键值
- PHP对多维数组按照某个键值大小进行排序
- php对多维数组的某个键值排序方法
- php删除多维数组里面的值
- php使用str_replace替换多维数组的简单方法
- php使用str_replace替换多维数组的实现代码实例
- php二维数组删除某个键值相同的数组
- 批量删除redis特殊键值
- PHP实现对多维数组按照某个键值排序的两种解决方法
- 将php数组中的键名删除,但是保留键值
- 按某个键值排序多维数组
- PHP 多维数组删除某字段或某几个字段
- php 数组 键值 特性
- php 多维数组的常用逻辑处理函数
- 技术向:一文读懂卷积神经网络
- 金额输入按照元角分格式,不需要输入小数点
- android 保存屏幕长亮方法
- spring3.2及以下的版本和 jdk8不兼容的问题
- LeetCode@HashMap_389_Find_the_Difference
- php批量处理多维数组替换,删除部分键值
- org.aspectj.lang.JoinPoint-中文简要API
- mysql报错:--initialize specified but the data directory has files in it. Aborting.
- 算法学习--编程易错小知识记录汇总
- 文章理解与写作
- xampp 修改数据库 密码
- mysql 5.0存储过程学习总结 (经典)
- Swift中的访问控制关键字
- 触发JVM进行Full GC的情况及应对策略