Open lovecn opened 7 years ago
function &chhua()
{
static $b="www.jb51.net";//申明一个静态变量
$b=$b."WEB开发";
echo $b;
return $b;
}
$a=chhua();//这条语句会输出 $b的值 为“www.jb51.netWEB开发”
$a="PHP";
echo "<Br>";
$a=chhua();//这条语 句会输出 $b的值 为“www.jb51.netWEB开发WEB开发”
echo "<Br>";
$a=&chhua();//这条语句会输出 $b的值 为“www.jb51.netWEB开发WEB开发WEB开发”
echo "<Br>";
$a="JS";
$a=chhua(); //这条语句会输出 $b的值 为"JSWEB开发"
function &test()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo $b;
return $b;
}
//http://www.jb51.net/article/51985.htm
$a=test();//这条语句会输出 $b的值 为1
$a=5;
$a=test();//这 条语句会输出 $b的值 为2
$a=&test();//这条语句会输出 $b的值 为3
$a=5;
$a=test(); //这条语句会输出 $b的值 为6
nginx配置类似于这样:
fastcgi_param HTTP_X_FORWARD_FOR $remote_addr;
上一句的目的是,将HTTP_X_FORWARD_FOR的值设置为$remote_addr的值。也就是将用户真实的ip(或用户使用代理的ip)放到HTTP_X_FORWARD_FOR中去。
$remote_addr是nginx的内置变量,这个变量它得到是用户真实的ip地址(用户使用了代理,则就是代理的ip地址)。
于是在php端通过getenv("HTTP_X_FORWARDED_FOR")就可以获取到nginx传递过来的值,是用户真实的ip地址。
//大体思路:由于是二维数组。所以先得到指定key的所有值。也就是转换为一维数组了。
/*
不过这个一维数组的key要使用二维数组的key。这样子一维数组排序后,方便对应到二维数组中去。就是靠这个key。
一维数组如下:
array('1'=>'a','4'=>''b','3'=>'c','5'=>'d');
1,2,4这些key值,到时候就是对应到里面去的证据
思考,如果还要加一个条件呢比如像sql那样子的:order by a,b,c
当a字段的值都相等的情况下,就启用b字段进行排序。如果还是相等,则启用c字段进行排序。
*/
/*
$keys = array();
$keys['gg'] = '8.9';
$keys[1] = '8.8';
$keys[5] = '7.5';
asort($keys);//排序有个特点,原来的key值不会改变的。只是把位置换一下。我之前以为是调换了key值。这样子,0,1,2,3,4
reset($keys);
var_dump($keys);
*/
/*
* +-------------------------------------------------------
* 快速排序
* @author wangtao 2015.6.10
* +-------------------------------------------------------
* @param $arr 要排序的数组,二维数组。对应就是数据库中的多行数据
array(
* 0=>array("字段1"=>'','字段2'=>''...)
* 1=>array("字段1"=>'','字段2'=>''...)
* 2=>array("字段1"=>'','字段2'=>''...)
* )
* @param $key_field 按照哪个字段进行排序
* @param $sort_type = asc or desc 排序方式。从小大到大,还是从大到小
* +-------------------------------------------------------
* return 按照指定排序后的一个新数组。原来的key仍然会保留
* 如:1=>array("字段1"=>'','字段2'=>''...),2=>array("字段1"=>'','字段2'=>''...)
* 按照"字段2"排序后,key为2元素可能在前面前面了,但是key值不会被修改,会原样保留
* +-------------------------------------------------------
*/
function quick_sort($arr, $key_field, $sort_type = "asc") {
if (count($arr) > 1) {
//使用哪个字段排序,先得到该字段所有数据,目的是转换成一维数组进行排序
$key_value_arr = array();
$return_arr = array();
//先判断排序的字段是否存在,如果字段根本不存在,避免打乱原来数组的顺序
foreach ($arr as $k => $v) {
@ $key_value_arr[$k] = $v[$key_field]; //得到这个字段的值
}
//php内置函数实现了按降序还是升序排,但是只支持一维数组
if ($sort_type == 'desc') {
arsort($key_value_arr);
} else {
asort($key_value_arr);
}
reset($key_value_arr);
foreach ($key_value_arr as $k => $v) {
$return_arr[$k] = $arr[$k]; //得到行
}
//var_dump($return_arr);
return $return_arr;
} else {
return $arr;
}
}
$array = array(
array('name'=>'手机','brand'=>'诺基亚','price'=>1050),
array('name'=>'笔记本电脑','brand'=>'lenovo','price'=>4300),
array('name'=>'剃须刀','brand'=>'飞利浦','price'=>3100),
array('name'=>'跑步机','brand'=>'三和松石','price'=>4900),
array('name'=>'手表','brand'=>'卡西欧','price'=>960),
array('name'=>'液晶电视','brand'=>'索尼','price'=>6299),
array('name'=>'激光打印机','brand'=>'惠普','price'=>1200),
array('name'=>'手机','brand'=>'诺基亚','price'=>1050),
);
var_dump(quickSort($array,'m'));
//看对一个数组里面元素值都为空的怎么排序
$row = array(
0=>null,
1=>null,
2=>null,
3=>null,
);
asort($row);
var_dump($row);//如果为空。则根据key值倒过来?
//http://www.cnblogs.com/wangtao_20/p/3505362.html
/*返回的是array
3 => null
2 => null
1 => null
0 => null
现在终于明白了,数据库字段中是否保持null,对于排序是有影响的。结果就会影响展示效果。
*/
Python正则表达式中findall返回列表中包含空字符串js
'ABCD'.match(/.$/g) ["ABCD", ""] 'ABCD'.match(/^./g) ["ABCD"] python3
re.findall(r'.\b', 'ABCD') ['ABCD', ''] re.findall(r'.(?=$)', 'ABCD') ['ABCD', ''] re.findall(r'.{0,}(?=$)', 'ABCD') ['ABCD', ''] \b、^、$、(?=exp) 这几个是零宽断言,只匹配位置,不消耗字符。
位置之后的零个字符''正好符合.*