在 JavaScript 中,有多种方法可以用来循环遍历数组。每种方法都有其特定的用途和优点。以下是常用的数组遍历方法总结: 1. for 循环 最经典的循环方式,可以完全控制遍历的起点、终点和步长。 const arr = [1, 2, 3, 4, 5]; for (let i = 0; i < arr.length; i++) { console.log(arr[i]); } 优点: 控制灵活,可以访问索引,支持 break 和 continue。 缺点: 需要手动管理索引,代码稍显冗长。 2. for...of 循环 用于......
一个树数组,有id,parent_id字段,parent_id字段表示父子关系,使用php写一个函数清除儿子数组为空的元素。 要清除树形数组中儿子数组为空的元素,我们可以使用递归的方法来遍历整个数组,并检查每个元素的子数组是否为空。如果为空,我们就从数组中移除它。以下是一个使用PHP编写的示例函数: function removeEmptyChildren( & $tree, $childrenName = 'children') { foreach($tree as $key => & $item) { if (em......
使用php将字符串根据指定的长度切分成一个数组,实现在字符串的每个字符之间插入一个空格。 /** * 将字符串根据指定的长度切分成一个数组 * @param string $str 字符串 * @param int $l 长度 * @return array|false|string[] */ function str_split_unicode($str, $l = 0) { if ($l > 0) { $ret = []; $len = mb_strlen($str, 'UTF-8'); for ($i = 0; $i < $len; $i += $l) { $ret......
JavaScript 针对二维数组按照指定的 key 的顺序进行排序,主要使用到了 sort() 方法,该方法主要用于对数组的元素进行排序。 sort() 方法有一个可选参数。但是,此参数必须是函数。 数组在调用 sort() 方法时,如果没有传参将按字母顺序(字符编码顺序)对数组中的元素进行排序,如果想按照其他标准进行排序,就需要进行传一个参数且为函数,该函数要比较两个值,并且会返回一个用于说明这两个值的相对顺序的数字。 下面用三......
php json_encode 输出数组保持展开格式。 Log::info(__METHOD__ . ' body:' . "\n" . json_encode($this->getBody(), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); 或者: echo json_encode($info, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);exit; JSON_UNESCAPED_UNICODE //以字面编码多字节 Unicode 字符(默认是编码成 \uXXXX),也就是不转义中文。 自 PHP 5.4.0 起生效。 JSON_PRETTY_PRINT //格式化输出
php获取给定时间范围内的日期列表数组。 /** * 获取给定时间范围内的日期列表数组 * @param int $start_unixtime * @param int $end_unixtime * @return array [日期 => 星期几] */ function getDateList($start_unixtime, $end_unixtime) { $date_list = []; while ($start_unixtime <= $end_unixtime) { $date_list[date('Y-m-d', $start_unixtime)] = date('w', $start_unixtime); //$date_lis......
调用 scws 分词插件返回分词数组的php函数。 /** * 调用 scws 分词插件返回分词数组 * @param string $string 如:go的安装和卸载 * @param array $removeAttrList 根据词性移除,c:连词;uj:结构助词; * @param int $minLen 词最小的长度 * @param bool $removeSame 是否去重 * @return array 结果如:['go', '安装', '卸载'] */ function getWordListByScws($string, $removeAttrList = [], $minLen = 0, $removeSame ......
php 给数组中的每个元素加上单引号或双引号。例如: $array = [1, 2]; 现在需要将该数组变为: $arr = ['1', '2']; 操作方法: $new_array = array_map(function ($value) { return '\'' . $value . '\''; }, $array); 关于 array_map 相关知识可参考: PHP数组函数array_map()笔记 php数组处理函数array_filter、array_walk、array_map的区别
例如像下面这种由对象组成的数组($vipUserList),在php 7下可以通过 array_column 获取该数组的 parent_uid 的一个一维数组列表,但是在 5.6 中 array_column 却不能作用于对象。 Array ( [32648321] => App\Models\VipUser Object ( [table:protected] => vip_user [mc_prefix:protected] => VipUser:: [fillable:protected] => Array ......
php二维数组按其中某一列排序。 <?php $data = [ ['name' => '张三', 'age' => '20', 'score' => '78'], ['name' => '李四', 'age' => '21', 'score' => '78'], ['name' => '王五', 'age' => '20', 'score' => '60'], ['name' => '大强子', 'age' => '26', 'score' => '100'] ]; // 将数据根据 score 降序排列 array_multisort(array_column($data, 'score'), SORT_DESC, $data); echo '<pre>';print_r($da......
JS中字符串与数组的转换,类似PHP的explode implode 。 js 数组转字符串 join var a = new Array(1, 2, 3, 4, 5, 6); var b = a.join(","); alert(b); js 字符串转数组 split var a = "1,2,3,4,5,6"; var b = new Array(); b = a.split(","); alert(typeof b); alert(b);
Laravel Eloquent使用groupBy()返回每个组的计数。示例:查询每个用户产生的日志数,并返回一个以uid为key的二维数组。 $user_log_num_list = UserLog::select('uid', DB::raw('COUNT(id) AS num')) ->whereIn('uid', $uid_list) ->groupBy('uid')->get()->keyBy('uid')->toArray();
PHP获取以字母递增为键值的数组。 /** * 获取以字母递增为键值的数组 * @param bool $capitalization * @param int $length * @return array */ function getCharList($capitalization = true, $length = 26) { $key = $capitalization ? 65/*大写字母*/ : 97/*小写字母*/; $list = array(); for ($i = 1; $i <= $length; $i++) { $list[] = chr($key); $key++; } return $list; } ......
该功能更好的处理方式请参考:php二维数组按其中某一列排序 php二维数组按照多个key进行排序。 /** * @param $array * @param $cols * @return array */ function array_msort($array, $cols) { $colarr = array(); foreach ($cols as $col => $order) { $colarr[$col] = array(); foreach ($array as $k => $row) { $colarr[$col]['_' . $k] = strtolower($row[$col]); } ......
php获取某个时间点之前的前 n 天,将结果组成数组。 /** * 获取某个时间点之前的前 n 天 * @param int $recent * @param int $time * @return array */ function getRecentDays($recent = 6, $time = 0) { !$time && $time = time(); $list = []; for ($i = $recent; $i > 0; --$i) { $t = strtotime("-$i day", $time); $list[] = date('Y-m-d', $t); } return $list; } print_r......
需求:二维数组,先根据字段A排序 如果A一样通过字段B排序。(更多字段排序原理一样) 该功能更好的处理方式请参考:php二维数组按其中某一列排序 使用php原生的array_multisort()函数,执行速度会快些且降低自定义函数的依赖,关于array_multisort详细使用 参考: http://php.net/manual/zh/function.array-multisort.php 思路: 1. 先搜集要排序的字段的值分别组合成一个新的数组 2. 再用 array_multisort 根据要排序的字段......
php中怎么去除二维数组的某个或某几个字段?最直接的使用 foreach 当然可以搞定,这里介绍一个比较特殊的方法,算是对php数组的用法再加深一下吧。 这里主要使用到了 array_walk 和 array_diff 两个函数。 示例: $list = [ 0 => [ 'id' => 1001, 'name' => '张三', 'sex' => '男' ], 1 => [ 'id' => 2091, 'name' => '李四', 'sex' => '女' ] ]; 假设需要......
使用php将一个二维数组处理成以其中一列为key,另一列为value的一维数组,有很多种办法,特记录一下使用php内置函数完成该功能的方法,算是加深一下对php数组处理函数的认识。 主要使用到了 array_column array_combine 两个函数。 示例: $list = [ 0 => [ 'id' => 1001, 'name' => '张三' ], 1 => [ 'id' => 2091, 'name' => '李四' ] ]; 现在需要将以上数据处理成为下列......
php技术中数组递归处理函数array_map,array_walk,array_filter的区别整理。 三个方法的具体使用形式列举如下: array_map(function($value){ // }, $array); array_walk($array, function($value, $key){ // }); array_filter($array, function($value){ // }); 相同点:都是利用回调函数对数组中每个元素进行操作。 不同点: 返回值 回调函数的参数 是否改变数组的值 array_map 返回的是新数组,原数组不变......
php中计算二维数组中某一个元素之和,记录两个简单的方法。 $user = [ ['name' => '语文', 'score' => 105], ['name' => '数学', 'score' => 116], ['name' => '英语', 'score' => 96], ['name' => '理综', 'score' => 236] ]; 现在需要记录 $user 的 score 字段的和值。 (1) echo array_sum(array_map(function ($value) { return $value['score']; }, $user)); (2) echo array_sum(array_col......
该功能更好的处理方式请参考:php二维数组按其中某一列排序 php二维数组按某个字段排序。 如需要将以下user_list变量按照第二维的字段age排序,则可以: $user_list = [ ['name' => '张三', 'age' => 28], ['name' => '李四', 'age' => 21], ['name' => '王五', 'age' => 20], ['name' => '赵六', 'age' => 21] ]; 按升序排列: array_multisort(array_column($user_list, 'age'), SORT_ASC, $user_list); ......
给接口方返回数据的时候,经常被要求只返回需要的字段,于是自己写了两个方法分别用于过滤获取结果集中的不需要的字段,使用的过程中需要先定义一个过滤的key数组,然后调用对应的方法处理即可。 过滤单个结果集: function filterResult(array &$result, array &$filter_key) { if (!$result) { return false; } $result = array_intersect_key($result, $filter_key); foreach ($filter_key as $ke......
现在的工作基本是开发接口,接口使用方对数据的要求基本都是无意义key的数组集合,对于一维数组,直接使用 array_values 处理一下即可,但是对于多维数组,php就不提供内置的处理方法了,这里自己写了一个利用php对多维数组进行 array_values 的方法,代码如下: function array_values_recursive(&$array) { $temp = []; foreach ($array as $key => $value) { if (is_numeric($key)) { $temp[] = ......
使用array_count_values函数可以找出数组中相同值出现的次数,array_count_values用法如下: array_count_values — 统计数组中所有的值出现的次数 array array_count_values (array $input) array_count_values() 返回一个数组,该数组用 input 数组中的值作为键名,该值在:input 数组中出现的次数作为值 input:统计这个数组的值 返回值: 返回一个关联数组,用 input 数组中的值作为键名,该值在数组中出现的次数作为值......
我们知道计算一维数组的元素值和,可以用array_sum求取,那么计算二维数组的某个key的值之和如何求取呢?当然可以直接使用foreach,也可用通过 array_map 函数来求取。还可以使用 array_column 来求取。 例如: $arr = [ 0 => [ 'id' => 1, 'num' => 6 ], 1 => [ 'id' => 2, 'num' => 3 ] ]; echo array_sum( array_map( function ($value) { ......
整理了一份PHP开发中数组操作大全,包含有数组操作的基本函数、数组的分段和填充、数组与栈、数组与列队、回调函数、排序、计算、其他的数组函数等。 一、数组操作的基本函数 数组的键名和值 array_values($arr); 获得数组的值 array_keys($arr); 获得数组的键名 array_flip($arr); 数组中的值与键名互换(如果有重复前面的会被后面的覆盖) in_array("apple",$arr); 在数组中检索apple array_search("apple"......
对象和数组的相互转化在开发中也是很常见,一般不是多维的情况下直接(array)和(object)就可搞定了,多维的话,遍历下也就可以了,如下: //数组转对象 function arrayToObject($e){ if( gettype($e)!='array' ) return; foreach($e as $k=>$v){ if( gettype($v)=='array' || getType($v)=='object' ) $e[$k]=(object)arrayToObject($v); } return (object)$e; } //对象转数......
该功能更好的处理方式请参考:php二维数组按其中某一列排序 php二维数组根据指定字段排序的方法总结。 /* 用于根据指定字段排序二维数组,保留原有键值 * $array array 输入二维数组 * $sortField string 要排序的字段名 * $sortBy string 要排序的方式(ASC|DESC) * return array * author www.phpernote.com */ function array_multisort_my($array,$sortField,$sortBy='ASC'){ $result=array(); foreach($array as $k=......
php获取一位数组里的最大值和最小值的方法。 php获取一位数组里面的最大值: <?php $a=array('1','3','55','99'); $pos=array_search(max($a),$a); echo $a[$pos]; php获取一位数组里面的最小值: <?php $a=array('1','3','55','99'); $pos=array_search(min($a),$a); echo $a[$pos];
使用Yii 的Active Record 来获取查询结果的时候,返回的结果集是一个对象类型的,但有时候为了数据处理的方便希望结果集是数组形式或者JSON格式的。那该怎么办呢? 将yii对象结果转为数组 // 查找满足指定条件的结果中的第一行 $post=Post::model()->find($condition,$params); // 查找具有指定主键值的那一行 $post=Post::model()->findByPk($postID,$condition,$params); // 查找具有指定属性值的行 $post=Po......