当前位置:  编程技术>php
本页文章导读:
    ▪PHP中__set 与 __get使用示例      PHP中__set 与 __get使用示例,有需要的朋友可以参考下。 官方说明 public void __set ( string $name , mixed $value ) public mixed __get ( string $name ) public bool __isset() ( string $name ) public void __unset ( string $name ) .........
    ▪php将地区分类排序的算法      php将地区分类排序的算法介绍,有需要的朋友可以参考下。 写一个函数,用来存储地区数据:   代码如下: <?php $array = array(     0=>array("","河北"),     1=>array("","北京"),     2=>.........
    ▪统计log日志并排序的php程序      需求是这样的:从log日志中找到访问小图最多的前三个ip地址。 日志文件:20121030.log,内容如下: 0    192.168.1.102    small_0.gif 1    192.168.1.113    big_1.gif 2    192.168.1.110    small_2.gif .........

[1]PHP中__set 与 __get使用示例
    来源: 互联网  发布时间: 2013-12-24

PHP中__set 与 __get使用示例,有需要的朋友可以参考下。

官方说明
public void __set ( string $name , mixed $value )
public mixed __get ( string $name )
public bool __isset() ( string $name )
public void __unset ( string $name )

在给未定义的变量赋值时,__set() 会被调用。
读取未定义的变量的值时,__get() 会被调用。
当对未定义的变量调用 isset() 或 empty()时,__isset() 会被调用。
当对未定义的变量调用 unset()时,__unset() 会被调用。
参数$name是指要操作的变量名称。__set() 方法的$value 参数指定了$name变量的值。
属性重载只能在对象中进行。在静态方法中,这些魔术方法将不会被调用。所以这些方法都不能被 声明为static。 从PHP 5.3.0起, 将这些魔术方法定义为static会产生一个警告。

演示代码1:
 

代码如下:

<?php
class Person {
    function __get( $property ) {
        $method = "get{$property}";
        if ( method_exists( $this, $method ) ) {
            return $this->$method();
        }
    }

    function __isset( $property ) {
        $method = "get{$property}";
        return ( method_exists( $this, $method ) );
    } 

    function getName() {
        return "Bob";
    }
                                                                               
    function getAge() {
        return 44;
    }
}
print "<pre>";
$p = new Person();
if ( isset( $p->name ) ) {
    print $p->name;
} else {
    print "nope\n";
}
print "</pre>";
// output:
// Bob
?>

演示代码2:
 

代码如下:

<?php
class Person {
    private $_name;
    private $_age;

    function __set( $property, $value ) {
        $method = "set{$property}";
        if ( method_exists( $this, $method ) ) {
            return $this->$method( $value );
        }
    }
 
    function __unset( $property ) {
        $method = "set{$property}";
        if ( method_exists( $this, $method ) ) {
            $this->$method( null );
        }
    }
                                                                       
    function setName( $name ) {
        $this->_name = $name;
        if ( ! is_null( $name ) ) {
            $this->_name = strtoupper()($this->_name);
        }
    }

    function setAge( $age ) {
        $this->_age = $age;
    }
}
print "<pre>";
$p = new Person();
$p->name = "bob";
$p->age  = 44;
print_r( $p );
unset($p->name);
print_r( $p );
print "</pre>";
?>

输出结果:
Person Object
(
    [_name:Person:private] => BOB
    [_age:Person:private] => 44
)
Person Object
(
    [_name:Person:private] =>
    [_age:Person:private] => 44
)


    
[2]php将地区分类排序的算法
    来源: 互联网  发布时间: 2013-12-24

php将地区分类排序的算法介绍,有需要的朋友可以参考下。

写一个函数,用来存储地区数据:
 

代码如下:
<?php
$array = array(
    0=>array("","河北"),
    1=>array("","北京"),
    2=>array(0,"保定"),
    3=>array(1,"海淀"),
    4=>array(3,"中关村"),
    5=>array(2,"涿州")
);
?>

处理后返回如下结果:
河北
-保定
--涿州
北京
-海淀
--中关村

算法代码:
 

代码如下:
<?php
    function typeArray($array){
        $con = null;
        foreach ($array as $k=>$v){
            $na[$k] = is_numeric($v[0]) ? $na[$v[0]].$k."|" : $k."|";
        }
        asort($na); //排序
        foreach ($na as $k=>$v){
          $s = substr_count($v,"|");
          $con .= str_repeat("-",($s-1)).$array[$k][1]."\n";
        }
        return $con;
    }
?>

    
[3]统计log日志并排序的php程序
    来源: 互联网  发布时间: 2013-12-24

需求是这样的:从log日志中找到访问小图最多的前三个ip地址。

日志文件:20121030.log,内容如下:
0    192.168.1.102    small_0.gif
1    192.168.1.113    big_1.gif
2    192.168.1.110    small_2.gif
3    192.168.1.114    small_3.gif
4    192.168.1.118    small_4.gif
5    192.168.1.109    big_5.gif
6    192.168.1.110    small_6.gif
7    192.168.1.102    small_7.gif
8    192.168.1.110    small_8.gif
9    192.168.1.119    big_9.gif
10    192.168.1.112    small_10.gif

。。。中间省略。。。

91    192.168.1.112    small_91.gif
92    192.168.1.112    small_92.gif
93    192.168.1.108    small_93.gif
94    192.168.1.105    big_94.gif
95    192.168.1.117    big_95.gif
96    192.168.1.119    big_96.gif
97    192.168.1.105    big_97.gif
98    192.168.1.120    small_98.gif
99    192.168.1.114    small_99.gif

程序代码:
 

代码如下:
<?php
function topIp($logfile,$length=3){
    $handle = fopen($logfile, 'r');
    $countip = array();//统计ip
    if ($handle) {
        while ($buffer = fgets($handle)) {//逐行读取文件
            $arr = preg_split('/\t/',$buffer);
            if(strstr($arr[2],"small")){//小图
                //ip为键,出现次数为指
                $countip[$arr[1]] = $countip[$arr[1]] ? ++$countip[$arr[1]] : 1;
            }
        }
        fclose($handle);
        arsort($countip);//ip出现次数倒序
        return array_slice($countip,0,$length);//提取
    }
}
$topips = topIp('20121030.log',3);
var_dump($topips);
?>

输出的结果:
array(3) { ["192.168.1.110"]=> int(10) ["192.168.1.108"]=> int(8) ["192.168.1.120"]=> int(7) }


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
nosql iis7站长之家
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3