PHP关联数组排序几种方法
参数说明:$data 目标数组 $key 排序字段, $sort 排序规则
代码如下 | 复制代码 |
function getSortArray($data,$key,$sort='ASC') 使用方法: $a = array( 结果: ( [0] => Array ( [name] => sunny [age] => 28 )
[1] => Array ( [name] => stone [age] => 17 [sex] => 男 )
[2] => Array ( [name] => grass [age] => 16 [sex] => 女 )
[3] => Array ( [name] => sea [age] => 15 [birthday] => 1987-08-16 )
) |
不知道你有没有看懂呢?没懂我们再看两个数组排序例子
要对数组针对age字段进行排序,php自带的简单sort功能函数,显然都不能满足需求,因此需要自己写一个快速排序代码来实现相应的需求。
代码如下 | 复制代码 |
<?php <?php |
js调用天气预报方法
中国气象台
代码如下 | 复制代码 |
<iframe src="http://m.weather.com.cn/m/pn12/weather.htm " width="245" height="110" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no"></iframe> |
上面是使用了框架方法,不好改自己的格式风格
最简单办法
代码如下 | 复制代码 |
<?php |
html代码
代码如下 | 复制代码 |
<html> |
上面是指定城市了,我们可以在自己网站选择城市,例子
代码如下 | 复制代码 |
<?php /** * php 天气预报代码 * by www.111cn.net */ if(!isset($_GET['q'])){ //根据IP查询所在地 $p = file_get_contents("http://www.jbxue.com/ip/?q={$_SERVER['HTTP_X_FORWARDED_FOR']}"); } else{ $p = $_GET['q']; } $k = 0; $encoding = mb_detect_encoding()($p); if($encoding != "UTF-8"){ $p = mb_convert_encoding($p,"utf-8","gbk"); } $p_arr = array( "01" => "北京", "02" => "上海", "03" => "天津", "04" => "重庆", "05" => "黑龙江", "06" => "吉林", "07" => "辽宁", "08" => "内蒙古", "09" => "河北", "10" => "山西", "11" => "陕西", "12" => "山东", "13" => "新疆", "14" => "西藏", "15" => "青海", "16" => "甘肃", "17" => "宁夏", "18" => "河南", "19" => "江苏", "20" => "湖北", "21" => "浙江", "22" => "安徽", "23" => "福建", "24" => "江西", "25" => "湖南", "26" => "贵州", "27" => "四川", "28" => "广东", "29" => "云南", "30" => "广西", "31" => "海南", "32" => "香港", "33" => "澳门", "34" => "台湾" ); function find(&$item,$key,$data){ global $k; if(preg_match("/$item/u",$data)){ $k = $key; } } function get_data_arr($key){ if(!file_exists("./data/city{$key}.xml")){ $c =file_get_contents( "http://m.weather.com.cn/data5/city{$key}.xml" ); file_put_contents("./data/city{$key}.xml",$c); } else{ $c = file_get_contents("./data/city{$key}.xml"); } $arr = explode(",",$c); foreach($arr as $v){ $data = explode("|",$v); $ret[$data[0]] = $data[1]; } return $ret; } array_walk($p_arr,'find',$p); array_walk(get_data_arr($k),'find',$p); array_walk(get_data_arr($k),'find',$p); $ccode = get_data_arr($k); echo file_get_contents("http://m.weather.com.cn/data/{$ccode[$k]}.html"); ?> |
还有很多像可以调用更详细的天气信息的我们这里就不介绍了,大家可到天气网站去看他们提供的api接口 。
如果你希望你的php可以使用$_SERVER[PATH_INFO]我们需要让Apache支持pathinfo才可以了,当然大部份apache默认就是支持pathinfo的哦。
最后总结测试环境:
Ubuntu Server 14.04
PHP Version 5.5.9-1ubuntu4
Apache/2.4.7 (Ubuntu)
PATH_INFO是服务器状态中的一个参数,通过$_SERVER['PATH_INFO']可以查看内容。$_SERVER数组中除了PATH_INFO外,还有非常多的数据,比如REQUEST_URI包含了更多的信息。
还有容易混淆的概念:pathinfo指的是PHP4(4.0.3)的一个功能,用于返回一个文件的路径信息。
Apache默认支持PATH_INFO功能,网上的很多教程不是需要修改apache的配置文件,就是要修改php的配置文件,其实完全不用修改任何文件,可以采用以下两种方式来验证PATH_INFO功能。
方式一:原生代码测试
在一个全新的系统上,比如新建一个Ubuntu 14.04 Server虚拟机,仅安装OpenSSH和LAMP软件包。
在Apache的主路径/var/www/html目录下新建测试文件pathinfo.php,内容为
<?php
echo $_SERVER['PATH_INFO'];
?>
假设虚拟机的IP是192.168.1.106,访问http://192.168.1.106/pathinfo.php,会得到一个空白的页面。因为这个URL没有包含PATH_INFO信息。
更换网址测试http://192.168.1.106/pathinfo.php/year/2014/,页面上会显示/year/2014/,说明可以识别PATH_INFO信息。
方法二:用ThinkPHP测试
很多的PHP框架都需要获取PATH_INFO的值,以ThinkPHP为例,基本的步骤是:
下载最新的ThinkPHP到/var/www/html/目录,并解压,修改文件的权限为www-data
访问网址http://192.168.1.106/index.php,会自动生成Application下的文件列表
编辑文件Application/Home/Controller/IndexController.class.php,内容为
<?php
namespace HomeController;
use ThinkController;
class IndexController extends Controller {
public function index(){
$this->show('Hi,All','utf-8');
}
public function test(){
$this->show('test');
}
}
当访问http://192.168.1.106/index.php的时候,本质上是访问了http://192.168.1.106/index.php/Home/Index/index,如果后面这个长的可以访问,说明PATH_INFO是正常的。
如果存在异常,ThinkPHP可以能报错为无法加载模块/控制器或非法操作,可以通过访问test方法来验证。
输入网址http://192.168.1.106/index.php/Home/Index/test测试,页面会正常显示test
补充:Apache2.2.22开启PathInfo模式支持
在配置文件中加入
<Files *.php>
AcceptPathInfo On
</Files>
这样 Apache 就可以支持针对 php 文件的 PathInfo 了。
于是,小柒又充满希望的试了一下,可惜,还是没有成功。
我想,这PathInfo跟URL有关,那会不会是因为Apache服务器没有开启mod_rewrite模块的关系呢?于是,我在Apache的配置文件(Apache安装目录的conf文件夹下的httpd.conf文件)里找到:
#LoadModule rewrite_module modules/mod_rewrite.so
将前面的#去掉,改为:
LoadModule rewrite_module modules/mod_rewrite.so
保存,重启服务器后,项目终于可以使用PathInfo模式访问了
最近在进行一次对酷狗音乐歌词采集时发现酷狗音乐的歌词直接浏览都是“乱码”,自己平时所见的歌词都是lrc格式的文本,这种酷狗专用的krc格式的显然是经过特别处理过的,平时用酷狗听音乐也没仔细看他的歌词有什么不同,只是与天天静听等不同的是可以逐字高亮显示歌词。
于是搜索了下发现有个java版的半成品解密代码,测试了下竟然还是“乱码”,巨坑!于是只有采用最原始的办法,对酷狗的flash播放器进行反编译,发现这段krc解密的ActionScript代码:
代码如下 | 复制代码 |
public function loaderCompleteHandler(param1:ByteArray) : void{ |
根据这段代码可以很快转换成php解析代码:
代码如下 | 复制代码 |
$enKey = array(64, 71, 97, 119, 94, 50, 116, 71, 81, 54, 49, 45, 206, 210, 110, 105); |
上面的$krc_content为krc歌词压缩加密的文本内容,得到了解析后的krc明文文本歌词$krc_text,然后就可以很容易的转换成lrc歌词了,如下:
代码如下 | 复制代码 |
/** preg_match_all("/[(ar|ti|offset):(.+)]/",$krc_text,$matches); |
简单的示例:
代码如下 | 复制代码 |
$content = file_get_contents('1.krc'); |
分享一下,方便日后有类似需要的人查询!
php时区是一个非常有意思的问题,安装好apache+php环境之后会发现我们使用date函数获取的日期都与中国时间有8小时区别了,那么这个时区问题要如何解决呢?下面本人整理了一些关于php时区设置方法,有需要的朋友可进入参考。时区划分
整个地球分为24个时区,每个时序都有自己的本地时间。同一时间,每个时区的本地时间相差1到23个小时,例如,英国伦敦本地时间与北京本地时间相差8个小时。在国际无线电通信领域,使用一个统一的时间,称为通用协调时间(UTC,Universal Time Coordinated),UTC与格林威治标准时间(GMT,Greenwich Mean Time)相同,都与英国伦敦的本地时间相同
时区设置
由于PHP5.0对data()函数进行了重写,因此,目前的日期时间函数比系统时间少8个小时。在PHP语言中默认设置的是标准的格林威治时间(即采用的是零时区),所以要获取本地当前的时间必须更改PHP语言中的时区设置。
更改PHP语言中的时区设置有两种方法:
(1)修改php.ini文件中的设置,找到[date]下的“;date.timezone=”选项,将其修改为“date.timezone=Asia/Hong_Kong”,然后重新启动Apache服务器。
修改PHP.ini这个文件
找到date.timezone这行,去掉前面的分号,改成:
代码如下 | 复制代码 |
date.timezone = Asia/Shanghai |
修改 .htaccess文件
修改.htaccess文件有两种办法,下面的两条语句只要有一条即可
代码如下 | 复制代码 |
php_value date.timezone Asia/Shanghai |
(2)在应用程序中,在使用时间日期函数之前添加如下函数:
在代码中设置时区
代码如下 | 复制代码 |
1 date_default_timezone_set('Asia/Shanghai');//'Asia/Shanghai' 亚洲/上海 2 date_default_timezone_set('Asia/Chongqing');//其中Asia/Chongqing'为“亚洲/重庆” 3 date_default_timezone_set('PRC');//其中PRC为“中华人民共和国” 4i ni_set('date.timezone','Etc/GMT-8'); 5 ini_set('date.timezone','PRC'); 6 ini_set('date.timezone','Asia/Shanghai'); 7 ini_set('date.timezone','Asia/Chongqing'); date_default_timezone_set('PRC'); //PRC为中华人民共和国时区 |
或者
代码如下 | 复制代码 |
<?php |
参数为PHP可识别的时区名称,如果时区名称PHP无法识别,则系统采用UTC时区。在PHP手册中提供了各个时区名称列表,其中,设置我国北京时间可以使用的时区包括:PRC(中华人民共和国)、Asia/Chongqing(重庆)、Asia/Shanghai(上海)或者Asia/Urumqi(乌鲁木齐),这几个时区名称等效的。
设置完成后,date()函数便可以正常使用,不会再出现时差问题。
输出系统的当前时间
上面是一种设置系统当前时间的方法,在这里将采用另外一种方式设置系统当前的时间,即直接在date()函数之前通过date_default_timezone_set()函数设置系统的时区,并输出系统当前的日期和时间。代码如下
代码如下 | 复制代码 |
<?php |
测试:
代码如下 | 复制代码 |
代码 unix时间戳:指的是当前(GMT标准)时间离unix纪元时间(1970-01-01 00:00:00)的秒数; |
strtotime(a):当前时间的GMT标准时间的unix时间戳,如果当前php系统的设置的时区不是GMT标准时区,则在应用strtotime(a)时,系统会自动把时间a折算成相应的GMT标准时间,然后计算这个时间的unix时间戳。跟php系统设置的时区有关
相关文章
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
- 这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
- 下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <?php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
- 下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了c#将字节数组转成易读的字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
- 这篇文章主要介绍了C#读取文件所有行到数组的方法,涉及C#针对文件及数组的相关操作技巧,需要的朋友可以参考下...2020-06-25
- 如何将下面的二维数组转为一维数组。复制代码 代码如下:$msg = array( array( 'id'=>'45', 'name'=>'jack' ), array( 'id'=>'34', 'name'=>'mary' ), array( 'id...2014-05-31
- 在php中为我们提供了一个函数var_export 他可以直接将php代码入到一个文件中哦。 代码如下 复制代码 var_export($times,true);后面不加tru...2016-11-25
- 本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享。 具体是这样的,如下一个二维数组,是从库中读取出来的。 代码清单: 复制代码 代码如下: $user = array( 0 => array( 'id' => 1, 'name' => '张三', 'ema...2014-06-07
- 1.前言 昨天碰到一道关于如何解决有序数组的连接问题,这是一个很常见的问题。但是这里要考虑到代码的效率问题,因为要连接的数组都是有序的,这是一个非常重要的前提条件。2.简单但效率不高的算法 我首先想到的是使用...2013-10-04
- 今天小编就为大家分享一篇python 实现将Numpy数组保存为图像,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
C#中数组、ArrayList、List、Dictionary的用法与区别浅析(存取数据)
在工作中经常遇到C#数组、ArrayList、List、Dictionary存取数据,但是该选择哪种类型进行存储数据呢?很迷茫,今天小编抽空给大家整理下这方面的内容,需要的朋友参考下吧...2020-06-25- 这篇文章主要介绍了C#中List和数组之间转换的方法,涉及比较简单的转换技巧,需要的朋友可以参考下...2020-06-25
- 下面小编就为大家带来一篇javascript中去除数组重复元素的实现方法【实例】。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧...2016-04-16
- 下面小编就为大家带来一篇Perl与JS的对比分析(数组、哈希)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-29