服务器上存在多个php时,则会有多个php.ini文件。
可以通过以下方法,找到对应的php.ini文件路径。
Configuration File (php.ini) Path: /opt/php-5.2.4/etc
Loaded Configuration File: /opt/php-5.2.4/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
收集了一段 php写二进制文件的代码,供大家学习参考。
/*
二进制文件格式如下
+-----------------------------------------------------+
|总记录数(4B)|空白(7B)--------------------------------|
|开始ip(4B) |结束ip(4B) |省id(1B)|市id(1B)|ispid(1B)|
|开始ip(4B) |结束ip(4B) |省id(1B)|市id(1B)|ispid(1B)|
|开始ip(4B) |结束ip(4B) |省id(1B)|市id(1B)|ispid(1B)|
+-----------------------------------------------------+
*/
//要写如的文件
$filename="a.dat";
//wb表示用二进制重新写文件
$fp=fopen($filename,'wb')or die("cannot open a.dat");
//原始数据:开始ip,结束ip,省id,市id,isp的id
$records=array(
array(
'110.25.23.1', //开始ip
'110.25.23.254', //结束ip
3, //省id
1, //市id
6 //isp的id
),
array(
'210.200.10.1',
'210.254.23.254',
1,
1,
2
),
array(
'211.68.154.1',
'211.254.47.254',
2,
2,
2
),
array(
'222.22.45.1',
'254.255.255.255',
3,
3,
3
),
array(
'255.255.255.255',
'255.255.255.255',
0,
0,
0
)
);
//计算记录总数
$total=count($records);
//用4个字节记录记录总数
$inputstr=sprintf()("%08x",$total);
echo "$inputstr";
//用4个字节记录记录总数,写入文件
$str=pack ("H8",$inputstr);
fwrite($fp,$str);
//补充7个字节的空白
$str=pack ("a7","");
fwrite($fp,$str);
foreach($records as $item)
{
//用4个字节记录开始ip
$inputstr=sprintf("%x",ip2long($item[0]));
$str=pack ("H8",$inputstr);
fwrite($fp,$str);
//用4个字节记录结束ip
$inputstr=sprintf("%x",ip2long($item[1]));
$str=pack ("H8",$inputstr);
fwrite($fp,$str);
//用1个字节记录省id
$inputstr=sprintf("%02x",$item[2]);
$str=pack ("H2",$inputstr);
fwrite($fp,$str);
//用1个字节记录市id
$inputstr=sprintf("%02x",$item[3]);
$str=pack ("H2",$inputstr);
fwrite($fp,$str);
//用1个字节记录ispid
$inputstr=sprintf("%02x",$item[4]);
$str=pack ("H2",$inputstr);
fwrite($fp,$str);
}
fclose($fp);
?>
示例代码:
<?php
function filter($var)
{
if($var == '')
{
return false;
}
return true;
}
$arr = array('a','','b');
print_r(array_filter($arr, "filter"));
?>
以前在去掉数组的空值是都是强写foreach或者while的,利用这两个语法结构来删除数组中的空元素:
foreach( $arr as $k=>$v){
if( !$v )
unset( $arr[$k] );
}
?>
而且自我感觉还挺不错,只是这样的效率并不高也曾经试过,先将$arr转为对象,然后利用对象的特性来删除,因为:foreach是将当前操作的数组进行copy,每操作一下foreach,都是copy了一个变量,页面里面如果有太多的foreach,会是一个很大的消耗。
在网上闲逛的时候,看到人有提示用array_filter,觉得很吃惊。打开手册瞅了一下,发现自己一直就守着个宝山却不知道如何使用。
array_filter函数的功能是利用回调函数来对数组进行过滤,一直都以为用回调函数才能处理,却没有发现手册下面还有一句,如果没有回调函数,那么默认就是删除数组中值为false的项目。
例子:
<?php
$entry = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);
print_r(array_filter($entry));
?>
输出值为:
XML/HTML代码
Array
(
[0] => foo
[2] => -1
)
就象array_slice一样也是个好东西。可惜以前从来没有注意过。
建议:PHP里面最重要的应该就是数组操作和字符串操作,这两方面的函数都必须要熟练。
function delBlank($param)
{
return !empty($param) ? true : false;
}
$output = array_filter($a, 'delBlank');