该功能主要用到 array_filter() 函数,这个函数可以用回调函数过滤数组中的单元。用法:

array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )

依次将 array 数组中的每个值传递到 callback函数。如果 callback函数返回 TRUE,则传入数组的当前值会被包含在返回的结果数组中,数组的键名保留不变。

其中,flag 可以指定传入回调函数是数组的键值、元素值、还是键值和元素值两者都有。默认情况下只传入元素值,如果要根据键值,flag需要设置为 ARRAY_FILTER_USE_KEY ,不过只有PHP5.6.0及之后的版本才能直接使用这个参数,之前的版本需要额外处理,文章最后我们会提供处理的代码。

我们就是利用这样的特性获取奇偶数组,如下。

1 根据键值(key)提取

function odd($var)

{

// 返回$var最后一个二进制位,

// 为1则保留(奇数的二进制的最后一位肯定是1)

return($var & 1);

}

function even($var)

{

// 返回$var最后一个二进制位,

// 为0则保留(偶数的二进制的最后一位肯定是0)

return(!($var & 1));

}

$array1 = array("a"=>1, "4"=>2, "5"=>3, "d"=>4, "e"=>5);

$array2 = array(6, 7, 8, 9, 10, 11, 19);

echo "奇数:\n";

print_r(array_filter($array1, "odd", ARRAY_FILTER_USE_KEY));

echo "偶数:\n";

print_r(array_filter($array2, "even", ARRAY_FILTER_USE_KEY));

?>

注意:传入的数组需是索引数组,也就是下标是数字的数组,其他类型下标的元素会导致输出不准确。

2 根据元素值(value)提取

根据元素值提取与根据键值的唯一区别是,传给array_filter的是哪一个。如果根据元素值,array_filter 的 flag 直接为空,保留默认值即可。

function odd($var)

{

// 返回$var最后一个二进制位,

// 为1则保留(奇数的二进制的最后一位肯定是1)

return($var & 1);

}

function even($var)

{

// 返回$var最后一个二进制位,

// 为0则保留(偶数的二进制的最后一位肯定是0)

return(!($var & 1));

}

$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);

$array2 = array(6, 7, 8, 9, 10, 11, 12);

echo "奇数:\n";

print_r(array_filter($array1, "odd"));

echo "偶数:\n";

print_r(array_filter($array2, "even"));

?>

3 简化写法

例如,在以上的例子中,我们根据偶数下标提取元素,可以通过匿名函数简化实现,如下:

$array = array(6, 7, 8, 9, 10, 11, 12);

$array_odd = array_filter($array2, function($var) {

return ($var & 1);

}, ARRAY_FILTER_USE_KEY);

print_r($array_odd);

?>

如果是PHP 5.6.0之前的版本,需要额外处理,如下:

$array = array(6, 7, 8, 9, 10, 11, 12);

$keys = array_filter(array_keys($array), function($key) {

return ($key & 1);

});

$array_odd = array_intersect_key($array, $keys);

?>

文章转自:https://www.awaimai.com/891.html

关注微信公众号:lovephp

PHP 提取数组中奇数或偶数的元素array_filter

//提取奇数 $filter = array_filter($ql,function($var){ return($var & 1); },ARRAY_FILTER_USE_KEY); pri ...

CSS奇数、偶数、指定数样式

原文: https://blog.csdn.net/wangjia200913/article/details/49615325 语法    :nth-child(an+b) 第一种:简单数字序号写法 ...

剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)

题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 输入: 每个输 ...

剑指offer:调整数组顺序使奇数位于偶数前面

题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 分析 事实上,这个题比较简单,很多种方式都可以实现,但是其时间复杂度或空间复 ...

循环赛日常表算法(N可为奇数和偶数)

一. 实验题目 设有n位选手参加网球循环赛,循环赛共进行n-1天,每位选手要与其他n-1位选手比赛一场,且每位选手每天必须比赛一场,不能轮空.试按此要求为比赛安排日程. 二.实验目的 1.深刻理解并掌 ...

《剑指offer》面试题14 调整数组顺序使奇数位于偶数前面 Java版

(输入整数数组,使所有奇数位于前半部分,所有偶数位于后半部分.) 我的方法:想到用两个下标分别表示奇数和偶数的界线,一个在开头,一个在末尾,判断每一个数字的类别,然后将它放入对应的范围内,移动下标,直 ...

剑指Offer面试题:13.调整数组顺序使奇数位于偶数前面

一.题目:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 例如有以下一个整数数组:12345 ...

php如何实现原址排序数组使奇数位于偶数前面(代码)

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 1.遍历数组,判断元素奇数偶数 ...

《剑指offer》 调整数组顺序使得奇数在偶数前面

本题来自 调整数组顺序使得奇数在偶数前面 题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分, ...

随机推荐

69个经典Spring面试题和答案

Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring 框架目标是简化Java企业级应用开发,并通过PO ...

AX7: Quick and easy debugging

This purpose of this blog is to show how you can get quickly get started with debuggingin AX7, speci ...

express源码剖析2

当使用express时,代码会这样写: var express = require('express'); 如果创建一个express的应用,代码会这样写: var app = express(); ...

EF 命令

我们选VS中工具-库程序包管理器-程序包管理器控制台, 这时在VS底部会出现控制台 这时候我们要执行四个操作: 下载安装EF 到工程.PM> Install-Package EntityFram ...

[视频转换] C#VideoConvert视频转换帮助类 (转载)

点击下载 VideoConvert.zip 主要功能如下 .获取文件的名字 .获取文件扩展名 .获取文件类型 .视频格式转为Flv .生成Flv视频的缩略图 .转换文件并保存在指定文件夹下 .转换文件 ...

JavaScrtip之JS最佳实践

一.JavaScript之平稳退化 这边使用一个当用户点击某个页面内某个链接弹出一个新窗口的案例: JavaScript使用window对象的open()方法来创建新的浏览器窗口; window.op ...

Python中print字体颜色的设置

Python中print字体颜色的设置 实现过程:       终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关.       转义序列是以ESC开头,即用\033来完成 ...

Loadrunner 26377错误

26377错误的成因很多,总结最直接的结果就是No match found for the requested parameter "XXXXX".意思就是没有找到关联变量匹配的值 ...

ios开发之--使用xib适配iPhone X

最近在修改一个老项目,里面有很多xib文件,需要适配iPhone X,但是又不想重写页面用代码适配,分享个小方法,也算是个笨办法吧, 适配iPhone X底部,iPhone X底部有34px的操作区域 ...

php 取奇数,PHP提取奇数或偶数下标元素相关推荐

  1. python 隔一个取一个 取出奇数索引元素 取出偶数索引元素

    这个实现的方法有很多种,但是我想简单一点,即省事还优雅. 取出偶数索引元素 只需要调整步长即可. lis = lis[::2] 取出基数索引元素 这个一开始却是没想到,还去Google了一下,没有满意 ...

  2. excel提取奇数行

    在我们表格里,我们如何提取奇数行或者偶数行呢?其实我们可以通过函数来进行提取,接下来给大家分享具体操作方法,需要的朋友可以参考下! 方法/步骤: 打开表格,在一列表格内输入数据: 在单元格内输入函数, ...

  3. 算法:循环赛日程表_一般化(n可以为奇数,也可以为偶数)

    算法思路: 算法思路(N可能为奇数,也可能是偶数)总体思路:按分治策略,将所有分为两半,n个选手可以通过n/2个选手设计的比赛日程表来决定.递归地用一分为二的略对选手进行分割,直到只剩下两个选手.对于 ...

  4. 数组和矩阵问题:奇数下标都是奇数或者偶数下标都是偶数

    [题目] 给定一个长度不小于2的数组 arr, 实现一个函数调整 arr, 要么让所有的偶数下标都是偶数,要么让所有的奇数下标都是奇数. [题目] 如果 arr 的长度为 N,函数要求时间复杂度为 O ...

  5. 遍历strs数组,并判断数组中每一个元素的长度, * 将长度为偶数的元素和长度为奇数的元素分别存放在两个集合中,

    package Day08;import java.util.ArrayList;/*** 二* 字符串数组strs中包含字符串{"12","345",&quo ...

  6. java链表奇数倒序偶数顺序_将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变。...

    2.将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变. 示例: 交换前链表的顺序             交换后链表的顺序 4→5→3→1→2   == ...

  7. linux用shell奇数打印星号,shell 打印偶数行-奇数行 ,打印行号

    打印行号awk '{print NR":"$0}' 打印偶数行.奇数行 (1)  awk '{print $0 > NR%2}'  file (2)sed -n '1~2p' ...

  8. 已定义了两个整数变量A和B,完成下列功能: (1)若两个数中有一个是奇数,则将奇数存入A中,偶数存入B中(2)若两个数均为奇数,则将两数均加1后存入原变量(3)若两个数均为偶数,则两个变量均不改变。

    已定义了两个整数变量A和B,试编写程序完成下列功能: (1)若两个数中有一个是奇数,则将奇数存入A中,偶数存入B中: (2)若两个数均为奇数,则将两数均加1后存入原变量: (3)若两个数均为偶数,则两 ...

  9. c语言6行6列元素奇数的个数,C语言任意输入n个整数,分别统计奇数的和.奇数的个数.偶数的和.偶数的个数....

    输入任意2个整数m和n,计算并输出这两个数(包括这2个数)之间所有奇数之和(C语言) //#includevoidmain(){intm,n,i,min,max;printf("Please ...

最新文章

  1. R语言诊断试验数据处理与ROC分析实战案例:联合诊断ROC
  2. 用 Heapster 监控集群 - 每天5分钟玩转 Docker 容器技术(176)
  3. from表单提交和JSON区别
  4. 这群程序员疯了!他们想成为IT界最会带货的男人
  5. 颜色矩特征提取matlab,求matlab彩色图片的颜色特征提取算法的代码,和纹理特征提取的? 爱问知识人...
  6. php.net对称压缩解压缩探讨
  7. SNPS IP LPDDR4 调试
  8. JavaWeb - 常用的HTTP请求头与响应头
  9. English语法_分词用法-作名词
  10. 计算机字节换算在线,计算机字节换算(计算机字节换算器)
  11. kpi绩效考核流程图_KPI绩效考核如何运作起来(内含企业KPI实例之详解)
  12. Flutter —快速开发的IDE快捷方式
  13. Java多线程 生产者-消费者问题示例
  14. 游戏账号交易平台,是专门为网络游戏提供相关交易服务的电子商务平台,主要从事网络游戏账号的交易。
  15. 千牛计算机使用方法,如何在电脑千牛中打开移动旺店
  16. 华为云“云上先锋”·AI主题赛(垃圾分类)-Top7复盘
  17. AI Studio 飞桨 零基础入门深度学习笔记6.3-手写数字识别之数据处理
  18. jqury ajax 直接获取数据库信息,使用jQuery Ajax从数据库加载信息
  19. java实现一元多项式减法_一元多项式 加法 减法 乘法
  20. BTC系列 - UTXO事务模型

热门文章

  1. 阿里云服务器的应用镜像和系统镜像怎么选?
  2. 判断h5页面是不是在微信小程序里面打开呢?
  3. NOIP 2014TG 联合权值
  4. 诺基亚卷土重来,欧洲手机品牌期待逆袭?
  5. AI艺术的背后:详解文本生成图像模型【基于 VQ-VAE】
  6. 数据分析—python中透视表的使用
  7. simulink风机混合储能电池超级电容储能联合一次调频IEEE9节点系统,三机九节点系统
  8. 90后不是让你们骂的!
  9. Boboniu Chats with Du(贪心 + 前缀和)
  10. mt4/5怎么搭建的?