酷狗音乐PC版 抢先体验 V11037
分类: 软件代码
Mysql 根据首字母查询
一、函数
这里是通过函数调用进行获取汉字的拼音首字母。
DELIMITER $$ CREATE FUNCTION `pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 DETERMINISTIC BEGIN DECLARE V_COMPARE VARCHAR(255); DECLARE V_RETURN VARCHAR(255); DECLARE I INT; SET I = 1; SET V_RETURN = ''; #循环截取字符 while I < LENGTH(P_NAME) do SET V_COMPARE = SUBSTR(P_NAME, I, 1); IF (V_COMPARE != '') THEN #字符串拼接 SET V_RETURN = CONCAT(V_RETURN, to_frist_pinyin(V_COMPARE)); END IF; SET I = I + 1; end while; IF (ISNULL(V_RETURN) or V_RETURN = '') THEN SET V_RETURN = P_NAME; END IF; RETURN V_RETURN; END$$ CREATE FUNCTION `to_frist_pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8 BEGIN DECLARE V_RETURN VARCHAR(255); DECLARE V_FIRST_CHAR VARCHAR(255); #这块主要意思是假如传入的是英文串的话,只取首字母 set V_FIRST_CHAR =UPPER(LEFT(CONVERT(P_NAME USING gbk),1)); set V_RETURN = V_FIRST_CHAR; #如果是这些特殊符号,直接返回# IF V_FIRST_CHAR in ('(',')','《','》') THEN SET V_RETURN = ''; #两个不相等只有一个情况,V_FIRST_CHAR是中文汉字或者中文符号。 elseif LENGTH( V_FIRST_CHAR) <> CHARACTER_LENGTH( V_FIRST_CHAR ) then SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10), 0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7, 0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB, 0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1), 'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z'); #如果是下面的直接原样输出 elseif V_FIRST_CHAR in ('A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z', '1','2','3','4','5','6','7','8','9','0','*','+','-','=','/','\\','{','}','[',']','(',')','(',')') then SET V_RETURN = V_RETURN; #其他的输出# else SET V_RETURN = '#'; END IF; #为空的话输出# RETURN IFNULL(V_RETURN,'#'); END$$ DELIMITER ;
二、执行遇到问题
set global log_bin_trust_function_creators = 1;
设置为1,创建完后,可以再设置回去。
简单介绍一下,当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。如果设置为0(默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限。 设置为0还强制使用DETERMINISTIC特性或READS SQL DATA或NO SQL特性声明函数的限制。 如果变量设置为1,MySQL不会对创建存储函数实施这些限制。
三、如何使用
select id,title,newstime,titlepic from phome_ecms_photo where pinyin(left(title,1))='D' limit 100
举例,要查询标题字段以D开头的数据,查询结果如下:
思维导图xmind zen
XMind 是一款专业的全球领先的商业思维导图软件,在国内使用广泛,拥有强大的功能、包括思维管理、商务演示、与办公软件协同工作等功能。它采用全球先进的Eclipse RCP软件架构,是集思维导图与头脑风暴于一体的可视化思考工具,能用来捕捉想法、理清思路、管理复杂信息并促进团队协作。XMind思维导图软件曾被著名互联网媒体Lifehacker评选为“最佳头脑风暴和思维导图工具”及”最受欢迎的思维导图软件”。小编给大家分享一款思维导图xmind zen 希望大家喜欢!
安装时请注意看安装说明,主程序安装完成后关闭软件,再安装破解软件,然后第一次打开软件后跳过登录,即可使用。千万不要更新哦,会导致软件无法使用
下载地址:https://wwz.lanzoul.com/i6ftk09aw87c
驱动精灵V9.7免安装不限速版
Pycharm激活码,Pycharm稳定专属激活码(全网最新)
Pycharm正版专属激活码领取(永久更新)
2018.2~2022版本用这个,下面激活码直接复制粘贴到activation code即可激活软件
下面是正版激活,会给大家一直更新的,直接复制粘贴到activation code即可激活
更换新激活码的时候如果还显示suspended,用新激活码再激活一次即可
35TQNTIWIC-eyJsaWNlbnNlSWQiOiIzNVRRTlRJV0lDIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5r+A5rS7IHd3d8K3YWppaHVvwrdjb20iLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJQQyIsInBhaWRVcFRvIjoiMjAyMi0wNy0wNSIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUFBDIiwicGFpZFVwVG8iOiIyMDIyLTA3LTA1IiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBXUyIsInBhaWRVcFRvIjoiMjAyMi0wNy0wNSIsImV4dGVuZGVkIjp0cnVlfSx7ImNvZGUiOiJQU0kiLCJwYWlkVXBUbyI6IjIwMjItMDctMDUiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUENXTVAiLCJwYWlkVXBUbyI6IjIwMjItMDctMDUiLCJleHRlbmRlZCI6dHJ1ZX1dLCJtZXRhZGF0YSI6IjAxMjAyMjA2MDZQU0FNMDAwMDA1IiwiaGFzaCI6IjM0NzAzNjUxLzA6MTExMjYwOTc5IiwiZ3JhY2VQZXJpb2REYXlzIjo3LCJhdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJpc0F1dG9Qcm9sb25nYXRlZCI6ZmFsc2V9-dhurTGA1v7l1FlzPxtw9xnqWN8Zoz2UUZ/h+kw+YQtkZBr5vyXzGEz9lhdBAy7Ie0kFg7ujEcPYx9ev0m93ZBHDq7ke0JdS6gPzrZhKqi2uhwi0evdlU/GmHlAf5oL7Ou/IPVEcrZ5fEr+aXPhxbBezAKbVn54/G+CU3triouIE0iNYvKpMxEm2eZV1Nk1V7s4DHHbF5b+KMlRJJvI3KAOnhPB9IO8zb36F02mvoO5Fek6wml/fZLeMpVaOPibIjgupmxItTLM2WZPDnemb9QsTAu1ciJGG5igzBD6pJ2InuvQBK9kMCeglTJ5lN14AfaWKv2DJT7xuZzRmvqmEPlQ==-MIIETDCCAjSgAwIBAgIBDTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTIwMTAxOTA5MDU1M1oXDTIyMTAyMTA5MDU1M1owHzEdMBsGA1UEAwwUcHJvZDJ5LWZyb20tMjAyMDEwMTkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCP4uk4SlVdA5nuA3DQC+NsEnZS9npFnO0zrmMWcz1++q2UWJNuGTh0rwi+3fUJIArfvVh7gNtIp93rxjtrQAuf4/Fa6sySp4c32MeFACfC0q+oUoWebhOIaYTYUxm4LAZ355vzt8YeDPmvWKxA81udqEk4gU9NNAOz1Um5/8LyR8SGsSc4EDBRSjcMWMwMkYSauGqGcEUK8WhfplsyF61lKSOFA6VmfUmeDK15rUWWLbOMKgn2cxFA98A+s74T9Oo96CU7rp/umDXvhnyhAXSukw/qCGOVhwKR8B6aeDtoBWQgjnvMtPgOUPRTPkPGbwPwwDkvAHYiuKJ7Bd2wH7rAgMBAAGjgZkwgZYwCQYDVR0TBAIwADAdBgNVHQ4EFgQUJNoRIpb1hUHAk0foMSNM9MCEAv8wSAYDVR0jBEEwP4AUo562SGdCEjZBvW3gubSgUouX8bOhHKQaMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0GCCQDSbLGDsoN54TATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQELBQADggIBAB2J1ysRudbkqmkUFK8xqhiZaYPd30TlmCmSAaGJ0eBpvkVeqA2jGYhAQRqFiAlFC63JKvWvRZO1iRuWCEfUMkdqQ9VQPXziE/BlsOIgrL6RlJfuFcEZ8TK3syIfIGQZNCxYhLLUuet2HE6LJYPQ5c0jH4kDooRpcVZ4rBxNwddpctUO2te9UU5/FjhioZQsPvd92qOTsV+8Cyl2fvNhNKD1Uu9ff5AkVIQn4JU23ozdB/R5oUlebwaTE6WZNBs+TA/qPj+5/wi9NH71WRB0hqUoLI2AKKyiPw++FtN4Su1vsdDlrAzDj9ILjpjJKA1ImuVcG329/WTYIKysZ1CWK3zATg9BeCUPAV1pQy8ToXOq+RSYen6winZ2OO93eyHv2Iw5kbn1dqfBw1BuTE29V2FJKicJSu8iEOpfoafwJISXmz1wnnWL3V/0NxTulfWsXugOoLfv0ZIBP1xH9kmf22jjQ2JiHhQZP7ZDsreRrOeIQ/c4yR8IQvMLfC0WKQqrHu5ZzXTH4NO3CwGWSlTY74kE91zXB5mwWAx1jig+UXYc2w4RkVhy0//lOmVya/PEepuuTTI4+UJwC7qbVlh5zfhj8oTNUXgN0AOc+Q0/WFPl1aw5VV/VrO8FCoB15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onD
2018.1以下版本用这个
35TQNTIWIC-eyJsaWNlbnNlSWQiOiIzNVRRTlRJV0lDIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5r+A5rS7IHd3d8K3YWppaHVvwrdjb20iLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJQQyIsInBhaWRVcFRvIjoiMjAyMi0wNy0wNSJ9LHsiY29kZSI6IlBQQyIsInBhaWRVcFRvIjoiMjAyMi0wNy0wNSJ9LHsiY29kZSI6IlBXUyIsInBhaWRVcFRvIjoiMjAyMi0wNy0wNSJ9LHsiY29kZSI6IlBTSSIsInBhaWRVcFRvIjoiMjAyMi0wNy0wNSJ9LHsiY29kZSI6IlBDV01QIiwicGFpZFVwVG8iOiIyMDIyLTA3LTA1In1dLCJoYXNoIjoiMzQ3MDM2NTEvMDoxMTEyNjA5NzkiLCJncmFjZVBlcmlvZERheXMiOjcsImF1dG9Qcm9sb25nYXRlZCI6ZmFsc2UsImlzQXV0b1Byb2xvbmdhdGVkIjpmYWxzZX0=-odQT4YAf7jxS425neTrnOFILScY03lHAubdbHFboNy0KwdOPMhS5RqQ+MIulTv3RjLZ0/z1EQ68Nvcbb8iOIM7CzpKlSLtaOE6AokdLRh8Twa7Xy7wZFVYRFgd7VjYoOFUHq1ezAs8GPRYGFjsgx1dMZpbndXoLBSK43G5v4lW3HMXK/0XYsMlbvcp3cGU32E2aUveewRwoIjmjiu2J6TV9bkc9lYRiYAT8qK2n0iqKS2HcH0+xZY8FVfD6xxeHJFrgEY4kmNLI/c6RGeNEU4j4W3JYd3KAh4WiX1zY9hmkfqEioFHysIj3w07onzugnH5PuyRx7L80SeW826ihSpA==-MIIETDCCAjSgAwIBAgIBDTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTIwMTAxOTA5MDU1M1oXDTIyMTAyMTA5MDU1M1owHzEdMBsGA1UEAwwUcHJvZDJ5LWZyb20tMjAyMDEwMTkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCP4uk4SlVdA5nuA3DQC+NsEnZS9npFnO0zrmMWcz1++q2UWJNuGTh0rwi+3fUJIArfvVh7gNtIp93rxjtrQAuf4/Fa6sySp4c32MeFACfC0q+oUoWebhOIaYTYUxm4LAZ355vzt8YeDPmvWKxA81udqEk4gU9NNAOz1Um5/8LyR8SGsSc4EDBRSjcMWMwMkYSauGqGcEUK8WhfplsyF61lKSOFA6VmfUmeDK15rUWWLbOMKgn2cxFA98A+s74T9Oo96CU7rp/umDXvhnyhAXSukw/qCGOVhwKR8B6aeDtoBWQgjnvMtPgOUPRTPkPGbwPwwDkvAHYiuKJ7Bd2wH7rAgMBAAGjgZkwgZYwCQYDVR0TBAIwADAdBgNVHQ4EFgQUJNoRIpb1hUHAk0foMSNM9MCEAv8wSAYDVR0jBEEwP4AUo562SGdCEjZBvW3gubSgUouX8bOhHKQaMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0GCCQDSbLGDsoN54TATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQELBQADggIBAB2J1ysRudbkqmkUFK8xqhiZaYPd30TlmCmSAaGJ0eBpvkVeqA2jGYhAQRqFiAlFC63JKvWvRZO1iRuWCEfUMkdqQ9VQPXziE/BlsOIgrL6RlJfuFcEZ8TK3syIfIGQZNCxYhLLUuet2HE6LJYPQ5c0jH4kDooRpcVZ4rBxNwddpctUO2te9UU5/FjhioZQsPvd92qOTsV+8Cyl2fvNhNKD1Uu9ff5AkVIQn4JU23ozdB/R5oUlebwaTE6WZNBs+TA/qPj+5/wi9NH71WRB0hqUoLI2AKKyiPw++FtN4Su1vsdDlrAzDj9ILjpjJKA1ImuVcG329/WTYIKysZ1CWK3zATg9BeCUPAV1pQy8ToXOq+RSYen6winZ2OO93eyHv2Iw5kbn1dqfBw1BuTE29V2FJKicJSu8iEOpfoafwJISXmz1wnnWL3V/0NxTulfWsXugOoLfv0ZIBP1xH9kmf22jjQ2JiHhQZP7ZDsreRrOeIQ/c4yR8IQvMLfC0WKQqrHu5ZzXTH4NO3CwGWSlTY74kE91zXB5mwWAx1jig+UXYc2w4RkVhy0//lOmVya/PEepuuTTI4+UJwC7qbVlh5zfhj8oTNUXgN0AOc+Q0/WFPl1aw5VV/VrO8FCoB15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onD
激活后如果显示key is invalid,这是因为你破解过软件的原因,请按如下操作
打开软件,help edit VM options ,删掉最下面一行的javaagent,重启软件即可
(如果是较新的版本Pycharm和Code with me都要激活一次)
转载于:https://www.ajihuo.com/pycharm/4197.html
CDR插件,一键批量标注尺寸,效率翻倍
CorelDRAW 在平面行业的应用非常广泛,尤其在制作印刷物料上暂时有着不可替代性;在平时我们制作物料模型时,需要对物料做尺寸标注,今天给大家分享一个尺寸标注的插件
ThinkPHP validate 验证规则
下面是部分tp5内置的验证规则:
格式验证类:
'name'=>'require'
验证某个字段的值是否为数字(采用filter_var
验证),例如:
number 或者 integer
'name'=>'number'
验证某个字段的值是否为浮点数字(采用filter_var
验证),例如:
float
'name'=>'float'
验证某个字段的值是否为布尔值(采用filter_var
验证),例如:
boolean
'boolean'=>'boolean'
验证某个字段的值是否为email地址(采用filter_var
验证),例如:
'email'=>'email'
验证某个字段的值是否为数组,例如:
array
'info'=>'array'
验证某个字段是否为为 yes, on, 或是 1。这在确认”服务条款”是否同意时很有用,例如:
accepted
'accept'=>'accepted'
验证值是否为有效的日期,例如:
注:会对日期值进行strtotime
后进行判断。
date
'date'=>'date'
验证某个字段的值是否为字母,例如:
alpha
'name'=>'alpha'
验证某个字段的值是否为字母和数字,例如:
alphaNum
'name'=>'alphaNum'
验证某个字段的值是否为字母和数字,下划线_
及破折号-
,例如:
alphaDash
'name'=>'alphaDash'
验证某个字段的值是否为有效的域名或者IP,例如:
activeUrl
'host'=>'activeUrl'
验证某个字段的值是否为有效的URL地址(采用filter_var
验证),例如:
url
'url'=>'url'
验证某个字段的值是否为有效的IP地址(采用filter_var
验证),例如:
注:支持验证ipv4和ipv6格式的IP地址。
ip
'ip'=>'ip'
验证某个字段的值是否为指定格式的日期,例如:
dateFormat:format
'create_time'=>'dateFormat:y-m-d'
长度和区间验证类
in
'num'=>'in:1,2,3'
验证某个字段的值不在某个范围,例如:
notIn
'num'=>'notIn:1,2,3'
验证某个字段的值是否在某个区间,例如:
between
'num'=>'between:1,10'
验证某个字段的值不在某个范围,例如:
notBetween
'num'=>'notBetween:1,10'
验证某个字段的值的长度是否在某个范围,例如:
length:num1,num2
'name'=>'length:4,25'
或者指定长度
'name'=>'length:4'
验证某个字段的值的最大长度,例如:
max:number
'name'=>'max:25'
如果验证的数据是数组,则判断数组的长度。
如果验证的数据是File对象,则判断文件的大小。
验证某个字段的值的最小长度,例如:
min:number
'name'=>'min:5'
如果验证的数据是数组,则判断数组的长度。
如果验证的数据是File对象,则判断文件的大小。
验证某个字段的值是否在某个日期之后,例如:
after:日期
'begin_time' =>'after:2016-3-18',
验证某个字段的值是否在某个日期之前,例如:
before:日期
'end_time' =>'before:2016-10-01',
验证当前操作(注意不是某个值)是否在某个有效日期之内,例如:
expire:开始时间,结束时间
'expire_time' =>'expire:2016-2-1,2016-10-01',
验证当前请求的IP是否在某个范围,例如:
allowIp:allow1,allow2,...
'name' =>'allowIp:114.45.4.55',
注:该规则可以用于某个后台的访问权限
验证当前请求的IP是否禁止访问,例如:
denyIp:allow1,allow2,...
'name' =>'denyIp:114.45.4.55',
字段比较类
验证某个字段是否和另外一个字段的值一致
confirm
'repassport'=>'require|confirm:passport'
验证某个字段是否和另外一个字段的值不一致
different
'name'=>'require|different:account'
验证是否大于等于某个值,例如:
egt 或者 >=
'score'=>'egt:60' || 'num'=>'>=:100'
验证是否大于某个值,例如:
gt 或者 >
'score'=>'gt:60' || 'num'=>'>:100'
验证是否小于等于某个值,例如:
elt 或者 <=
'score'=>'elt:100' || 'num'=>'<=:100'
验证是否小于某个值,例如:
lt 或者 <
'score'=>'lt:100'|| 'num'=>'<:100'
验证是否等于某个值,例如:
eq 或者 = 或者 same
'score'=>'eq:100'|| 'num'=>'=:100'|| 'num'=>'same:100'
filter验证
支持使用filter_var进行验证,例如:
'ip'=>'filter:validate_ip'
正则验证
支持直接使用正则验证,例如:
'zip'=>'\d{6}' 或者 'zip'=>'regex:\d{6}',
如果你的正则表达式中包含有|
符号的话,必须使用数组方式定义。
'accepted'=>['regex'=>'/^(yes|on|1)$/i'],
上传验证
验证是否是一个上传文件
file
验证是否是一个图像文件,width height和type都是可选,width和height必须同时定义。
image:width,height,type
验证上传文件后缀
fileExt:允许的文件后缀
验证上传文件类型
fileMime:允许的文件类型
验证上传文件大小
fileSize:允许的文件字节大小
行为验证
使用行为验证数据,例如:
'data'=>'behavior:\app\index\behavior\Check'
其它验证
验证当前请求的字段值是否为唯一的,例如:
unique:table,field,except,pk
// 表示验证name字段的值是否在user表(不包含前缀)中唯一
'name' => 'unique:user',
// 验证其他字段
'name' => 'unique:user,account',
// 排除某个主键值
'name' => 'unique:user,account,10',
// 指定某个主键值排除
'name' => 'unique:user,account,10,user_id',
如果需要对复杂的条件验证唯一,可以使用下面的方式:
// 多个字段验证唯一验证条件 'name' => 'unique:user,status^account', // 复杂验证条件 'name' => 'unique:user,status=1&account='.$data['account'],
验证某个字段的值等于某个值的时候必须,例如:
requireIf:field,value
// 当account的值等于1的时候 password必须 'password'=>'requireIf:account,1'
验证某个字段有值的时候必须,例如:
requireWith:field
// 当account有值的时候password字段必须 'password'=>'requireWith:account'
转载于:https://www.cnblogs.com/xuzhengzong/p/11614772.html
百度网盘下载提速
PHP多维数组指定列转换成一维数组
PHP中对多维数组特定列的提取,是个很常用的功能,正因为如此,PHP在5.5.0版本之后,添加了一个专用的函数array_column()。当然,如果你的PHP版本低于5.5.0,就得用别的方法处理了。
例如,对于以下这个数组:
$user = array(
'0' => array('id' => 100, 'username' => 'a1'),
'1' => array('id' => 101, 'username' => 'a2'),
'2' => array('id' => 102, 'username' => 'a3'),
'3' => array('id' => 103, 'username' => 'a4'),
'4' => array('id' => 104, 'username' => 'a5'),
);
我们要提取其中的 usename 列,变成:
$username = array('a1', 'a2', 'a3', 'a4', 'a5');
方法有以下几种。
1 array_column函数法
用PHP内置的 array_column() 函数是最简单的方法,限制是PHP版本必须是5.5.0及以上版本,方法:
$username = array_column($user, 'username');
2 array_walk函数法
array_walk()函数使用用户自定义函数对数组中的每个元素做回调处理,实现当前功能的方法:
$username = array();
array_walk($user, function($value, $key) use (&$username){
$username[] = $value['username'];
});
3 array_map函数法
array_map()函数和array_walk()
作用类似,将回调函数作用到给定数组的单元上。
$username = array();
array_map(function($value) use (&$username){
$username[] = $value['username'];
}, $user);
实际使用时,我们可以用array_map()
写出和PHP内置array_column()
一样功能的函数:
/**
* 获取二维数组指定的一列,并以一维数组格式返回
* 作用和PHP5.5.0中的array_column()函数一样
* @param $input array 需要取出数组列的多维数组(或结果集)
* @param $column_key string 需要返回值的列,它可以是索引数组的列索引,或者是关联数组的列的键。 也可以是NULL,此时将返回整个数组
* @param $index_key string 作为返回数组的索引/键的列,它可以是该列的整数索引,或者字符串键值。
* @return array|null
*/
function array_column($input, $column_key, $index_key = null) {
$arr = array_map(function($d) use ($column_key, $index_key) {
if (!isset($d[$column_key])) {
return null;
}
if ($index_key !== null) {
return array($d[$index_key] => $d[$column_key]);
}
return $d[$column_key];
}, $input);
if ($index_key !== null) {
$tmp = array();
foreach ($arr as $ar) {
$tmp[key($ar)] = current($ar);
}
$arr = $tmp;
}
return $arr;
}
4 foreach循环法
foreach
循环相对上面的方法效率稍微低一些,但简单容易理解。
$username = array();
foreach ($user as $value) {
$username[] = $value['username'];
}
5 array_map变种
方法如下,意为把$user数组的每一项值的开头值移出,并获取移除的值作为新数组。注意此时新数组$username的键仍是原数组$user的键,如下。
$username = array_map('array_shift', $user);
注意:该功能会获取$user中的 id 列,而不是 username 列。
另外,如果需要获取二维数组每一项的开头列或结尾列,也可以这样做:
$username = array_map('reset', $user);
$username = array_map('end', $user);
这三个变种方法作用比较局限,仅在获取第一列或最后一列的时候有用,在复杂的数组中就难以发挥作用了。
【破解】未上锁的房间1-4集合
《未上锁的房间 The Room》 是一款由Fireproof Games推出的3D密室逃脱类游戏,为你带来一段充满创意,离奇古怪的旅程,旅程里有唯美的场景,有危险的陷阱也有神秘的氛围,当然少不了引人入胜的谜题。游戏的主角在一个封闭的房子里醒来,然后想尽各种办法出去,随着剧情的深入,更大的阴谋就会浮出水面。The Room在开发的时候力求谜题更加深入,玩家将面对的可能是很难的谜题。作为一款同类型的密室逃脱类作品,该作在难度上达到了较高的水准,且游戏全英文更是增添难度,游戏设有四大章节,内容丰富。
游戏支持安卓4.2到安卓8.1的机型,更高的有些可能安装不起,不过我的手机是安卓10的还可以玩的
链接:https://pan.baidu.com/s/1lE8nwq2jeXE8U61bx1j7Dg
提取码:s759