php中根据数组的键(key)进行比较,排序,有很多内置函数可以轻松解决,如krsort(), ksort()等。如果是根据数组的值(value)进行比较就麻烦一些
如果值没有重复的情况,可以先用array_flip()来交换键和值,然后krsort(),最后再array_flip()交换回来,就可以比较大小了。如果要截取数组,可用array_slice()。
如果有值重复的情况,就要用到一些排序算法了,不过php有很强大的函数uasort(),使用自定义的比较函数对数组中的值进行排序并保持索引关联,usort()则会重建索引。
function cmp($a, $b){
if ($a["vote_num"] == $b["vote_num"]) {
return 0;
}
return ($a["vote_num"] > $b["vote_num"]) ? -1 : 1;
}
$arr = Array
(
0 => Array
(
o_id => 1861,
o_name => 2,
o_pic => 'http://a./image.gif' ,
o_detail => 人人,
vote_num => 1
),
1 => Array
(
o_id => 1844,
o_name => 芭比,
o_pic => 'http://upload./game_image/abc.jpg',
o_detail => 也是美女呢,
vote_num => 2
),
2 => Array
(
o_id => 1843,
o_name => 程程,
o_pic => 'http://a../upload_img/abc.png',
o_detail => 美女哦,
vote_num => 3
)
);
uasort($arr, ”cmp“);
echo ‘< pre >';
print_r ($arr);
echo ‘< / pre >';
返回
Array
(
[2] => Array
(
[o_id] => 1843
[o_name] => 程程
[o_pic] => http://a../upload_img/abc.png
[o_detail] => 美女哦
[vote_num] => 3
)
[1] => Array
(
[o_id] => 1844
[o_name] => 芭比
[o_pic] => http://upload./game_image/abc.jpg
[o_detail] => 也是美女呢
[vote_num] => 2
)
[0] => Array
(
[o_id] => 1861
[o_name] => 2
[o_pic] => http://a./image.gif
[o_detail] => 人人
[vote_num] => 1
)
)
判断数组为空时你会想到什么方法呢?首先想到的应该是empty函数,不过直接用empty函数判断为空是不对的,因为当这个值是多维数的时候,empty结果是有值的
其实我们可以利用array_filter函数轻松去掉多维空值,而数组的下标没有改变。
例子:
$array = array(
0 => 'zth',
1 => false,
2 => 1,
3 => null,
4 => '',
5 => 'http://www.',
6 => '0'
);
print_r(array_filter($array));
?>
上面代码输出结果为:
Array
(
[0] => zth
[2] => 1
[5] => http://www.
)
这样就把为空或者null或者false的值排除掉,以免程序出现漏洞!
方法1,使用模版
$fp = fopen ("templets.html","a");
if ($fp){
$fup = fread ($fp,filesize("templets.html"));
$fp2 = fopen ("html.shtml","w");
if ($fwrite ($fp2,$fup)){
$fclose ($fp);
$fcolse ($fp2);
die ("写入模板成功");
} else {
fclose ($fp);
die ("写入模板失败!");
}
}
?>
将模板写进一个文件,保存为html.html。
方法2,按时间生成html文件名
$content = "这是一个以日期时间为文件名的静态生成网页的测试文件,文件名格式一般为<font color=#ff0000>年月日时分秒.html</font>";
$date = date('YmdHis');
$fp = fopen (date('YmdHis') . '.html',"w");//本函数可用来打开本地或者远端的文件 'w' 开文件方式为写入,文件指针指到开始处,并将原文件的长度设为 0。若文件不存在,则建立新文件。
if (fwrite ($fp,$content)){//格式是.int fwrite(int fp(文件名), string string(内容), int [length](长度));本函数将字符串 string 写入文件资料流的指针 fp 上。若有指定长度 length,则会写入指定长度字符串,或是写到字符串结束。
fclose ($fp);//函数用来关闭已经打开的文件的指针 fp。成功返回 true,失败则返回 false。
die ("写入模板成功");
} else {
fclose ($fp);
die ("写入模板失败!");
}
echo ($content);
?>
方法3,转换文件名
<?php
$s_fname = "93e.php";
$o_fname = "93e.htm";
ob_end_clean();
ob_start();
include($s_fname);
$length = ob_get_length();
$buffer = ob_get_contents();
$buffer = eregi_replace("r","",$buffer);
ob_end_clean();
$fp = fopen($o_fname,"w+");
fwrite($fp,$buffer);
fclose($fp);
?>
这样就可以把93e.php转化为静态的HTML文件了。
注意:待转换的文件里不能有ob_end_clean();和 ob_start();语句。目录要有写权限。
您可能感兴趣的文章:
php生成静态页面的三种方法与代码详解
php生成静态页面函数(php2html)的例子
php生成静态页面的方法(三个函数)
细说php生成静态文件之模板与缓存
php写的一个生成静态页面的类
虚拟主机上定时自动生成静态页面的方法
php生成静态文件的二种方法
php生成静态页面的详细教程
php生成静态html文件的原理分析
smarty生成静态页面的方法