php dump怎么写,php常用算法和时间复杂度?
按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3)
复制代码 代码如下:
//二分查找O(log2n)
function erfen($a,$l,$h,$f){
if($l >$h){ return false;}
$m = intval(($l+$h)/2);
if ($a[$m] == $f){
return $m;
}elseif ($f < $a[$m]){
return erfen($a, $l, $m-1, $f);
}else{
return erfen($a, $m+1, $h, $f);
}
}
$a = array(1,12,23,67,88,100);
var_dump(erfen($a,0,5,1));
//遍历树O(log2n)
function bianli($p){
$a = array();
foreach (glob($p.'/*') as $f){
if(is_dir($f)){
$a = array_merge($a,bianli($f));
}else{
$a[] = $f;
}
}
return $a;
}
//阶乘O(log2n)
function jc($n){
if($n<=1){
return 1;
}else{
return $n*jc($n-1);
}
}
//快速查找 O(n *log2(n))
function kuaisu($a){
$c = count($a);
if($c <= 1){return $a;}
$l = $r = array();
for ($i=1;$i<$c;$i++){
if($a[$i] < $a[0]){
$l[] = $a[$i];
}else{
$r[] = $a[$i];
}
}
$l = kuaisu($l);
$r = kuaisu($r);
return array_merge($l,array($a[0]),$r);
}
//插入排序 O(N*N)
function charu($a){
$c = count($a);
for($i=1;$i<$c;$i++){
$t = $a[$i];
for($j=$i;$j>0 && $a[$j-1]>$t;$j--){
$a[$j] = $a[$j-1];
}
$a[$j] = $t;
}
return $a;
}
//选择排序O(N*N)
function xuanze($a){
$c = count($a);
for($i=0;$i<$c;$i++){
for ($j=$i+1;$j<$c;$j++){
if($a[$i]>$a[$j]){
$t = $a[$j];
$a[$j] = $a[$i];
$a[$i] = $t;
}
}
}
return $a;
}
//冒泡排序 O(N*N)
function maopao($a){
$c = count($a);
for($i=0;$i<$c;$i++){
for ($j=$c-1;$j>$i;$j--){
if($a[$j] < $a[$j-1]){
$t = $a[$j-1];
$a[$j-1] = $a[$j];
$a[$j] = $t;
}
}
}
return $a;
}
复制代码 代码如下:
/**
* 排列组合
* 采用二进制方法进行组合的选择,如表示5选3时,只需有3位为1就可以了,所以可得到的组合是 01101 11100 00111 10011 01110等10种组合
*
* @param 需要排列的数组 $arr
* @param 最小个数 $min_size
* @return 满足条件的新数组组合
*/
function plzh($arr,$size=5) {
$len = count($arr);
$max = pow(2,$len);
$min = pow(2,$size)-1;
$r_arr = array();
for ($i=$min; $i<$max; $i++){
$count = 0;
$t_arr = array();
for ($j=0; $j<$len; $j++){
$a = pow(2, $j);
$t = $i&$a;
if($t == $a){
$t_arr[] = $arr[$j];
$count++;
}
}
if($count == $size){
$r_arr[] = $t_arr;
}
}
return $r_arr;
}
$pl = pl(array(1,2,3,4,5,6,7),5);
var_dump($pl);
PHP如何将数组键转换为小写?
例入如下数组,将数组中的元素统一转换为小写
$Content = [
'wxid_9GJaw1ca4wat22', 'wxid_s6QTb9l6xqad22'
];
自定义函数解决上述问题
function array_to_lower($weChatArr)
{
foreach ($weChatArr as $key => $weChat) {
$byteArr2D[] = str_split(trim($weChat));
foreach ($byteArr2D[$key] as $byte) {
$byteToLowerArr2D[$key][] = ord($byte) >= 65 && ord($byte) <= 90 ? chr(ord($byte) + 32) : $byte;
}
}
return array_map('implode', $byteToLowerArr2D);
}
使用方法
$newContent = array_to_lower($Content);
var_dump($newContent);
输出结果为
————————————————
php如何接收json数据?
根据个人理解PHP接收json数据有三种:获取json格式的请求参数;获取json文件中的数据;获取接口返回的寄送数据。下面将一一讲述:1、获取请求参数$input = file_get_contents("php://input");
$input = json_decode($input,true);
var_dump($input);
2、获取文件中的json$jsonStr = file_get_contents('src/xx.json');
$jsonObj = json_decode($jsonStr, true);
3、获取接口返回的json(以post请求为例)function run_curl_json($url, $data, $timeout) {
$data = json_encode($data);
$ch = curl_init($url); //请求的URL地址
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($data)));
$ret = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$jsonObj = json_decode($ret, true);
return ['data' => $jsonObj, 'code' => $httpCode];
}
以上三种方式中获取到的都是json字符串,然后通过json_decode将json字符串转为数组。
环境影响评价工程师需要掌握的基本技能有哪些方面?
1,网络工程师的工作:你至少要能配置CISCO 6509以下的设备,熟悉各种网络协议,否则网络出问题的时候你会傻掉。
2,系统工程师的工作: 你至少要理解各种系统服务,在出问题的情况下要迅速解决问题,而不是等系统工程师来解决。
3,安全工程师的工作: 我不要求你一定要会各种网络编程,但是在服务器收攻击的情况下,没有防火墙的情况下,做一些简单的处理工作。
4,存储工程师的工作:至少要熟悉各个厂商的设备,各种备份和还原的办法。
5,测试工程师的工作:在新版本上线之前,你至少要协同测试工程师做测试工作,因为你是运维人员,不了解程序架构导致无法解决故障,你也有一份责任。
6,研发人员的工作 : 运维工具都需要自已开发,熟悉开发语言,需要有过实际开发经验,否则工作会非常痛苦,我深有体会。
7,英语
8,好的沟通者:不出问题时候你可以打游戏睡觉,出问题的时候要能和项目人员沟通,快速解决问题,而不是推;我知道有很多人能推责任,你可以做替死鬼,但是离开这个工作你还能找到更好的;把责任推到别人身上的人,下次出问题的时候,绝对没人帮你。你要能和各个兄弟部门关系非常的密切,出了问题有兄弟帮你担责任;也要能非常扯皮,没事在会议上把别人都搞定。
9,库房管理员:数万台服务器让你来管理,任何丢失或者损坏都是不负责任和失职的表现。 1. linux基础 包括对Linux整体的理解/使用和基本命令: 了解Linux FHS : Filesystem Hierarchy Standard,国人写的这本书不错 Linux系统架构与目录解析 (豆瓣) 入门Linux:鸟哥的Linux私房菜.基础学习篇(第三版) (豆瓣) 个人认为鸟哥的这本书是一本非常好的入门书 基本操作命令:Google,如Linux command cheat sheet 熟悉至少一个内置编辑器: vi, nano 至少熟悉一个发行版(或系列),建议作为服务器常用的如Centos, Debian, Ubuntu,可以了解多个常用发行版 2. 运维的命令: 运维相关的工具(命令),了解它能解决很多问题。 前几天刚回答了一个问题:如何才能更深入的学习linux? 里面的图在这里也可以用到: 可以对着图对学习了解这些命令。 另外我个人也会对平时用到的这些工具做一个整理和记录,总结到我的个人维基上:Wiki · Tanky Woo 3. 基础服务: LAMP或LNMP :Apache/Nginx,MySQL,PHP/Python/Perl LAMP (software bundle) FTP DNS SAMBA EMAIL NTP DHCP ... 可以本地搭建练练手 这里推荐鸟哥另外一本书 服务器架设篇: 鸟哥的Linux私房菜 (豆瓣) 4. 运维平台工具: 也在这个问题 如何才能更深入的学习linux? 里提到了: Nagios Puppet Zabbix Cacti SaltStack .... 可以选择性的折腾下,因为这个涉及到业务,没有实际环境,很难去理解他们的功能和特点。 5. 脚本: 必备:Shell 额外:Python,Perl... 6. 底层: Linux C,内核 7. 网络: 网络是非常重要的一块 把《TCP/IP协议详解》多看几遍,理解。 熟练使用tcpdump等抓包工具 8. 安全: 防火墙配置,如 iptables 9. 硬件: 接口类型 查看硬件信息 知道各类型服务器,如塔式、机架式、刀片式
你以前装金蝶软件是出现的TABCTL32OCX可能已经过期无法加载是怎么弄的?
TABCTL32.OCX是一个VB程序的控件,我估计你这个呀,是因为你最近安装了什么软件,然后软件自带的较老版本的TABCTL32.OCX控件覆盖了你原来的控件,所以出现这个错误提示。解决办法就是,到 “http://www.ocxdump.com/download-ocx-files_new.php/ocxfiles/T/TABCTL32.OCX/6.01.9782/download.html”下载一个TABCTL32.OCX文件,复制文件到C:\WINDOWS\system32目录下,就可以了。