例子
代码如下 | 复制代码 |
<? |
除了使用fopen函数之外还可以使用像file_get_contents函数
代码如下 | 复制代码 |
if( file_exists( $path ) ) { $body = file_get_contents($path); echo $body ;//输入文件内容 } else { echo "文件不存在 $path"; } |
这个函数是一次性读取所有文件内容并显示出来,但是如果文件超大会导致php占很大的内存了。
当然还有像file这种一般是把文件读成数组了,同时也可以实现读取文件了
下面来看一个关于php把excel数值格式转成日期格式问题,因为自己在做一个转换时碰到问题,后来网上找到解决办法与原因下面一起看看。在excel中:40847对应2011-10-31,是日期的数值型表现形式。
在PHP中,echo date('Y-m-d H:i:s',40847);//结果1970-01-01 11:52:30
原因:
PHP 的时间函数是从1970-1-1日开始计算的,单位是秒数。但是 EXCEL的是从1900-1-1日开始算的单位是天数。
如果只计算1970以后的时间的话,就好处理了。
先获得 EXCEL中 1970-1-1 代表的数字,我查了是25569。
现在要把excel中的40947,在php中用函数正确的显示出来
代码如下:
<?php
$time = (40847 – 25569) * 24*60*60; //获得秒数
echo date('Y-m-d H:i:s', $time); //出来 2011-10-31
?>
const
用来定义那些在运行时不能被改变的常数值。一旦定义且不能改变其值,假如在程序中改变了它的值,那么会出现错误。
代码如下 | 复制代码 |
<?php |
前面没有美元符号($),可以在不需要初始化该类的情况下实用。常量值必须是一个常量表达式。const定义的变量,在子类中可以被覆盖。
在类的内部定义,php5.3以后也可以在类的外部定义。
const不可以用表达式。
define()
可以用 define() 函数来定义常量。一个常量一旦被定义,就不能再改变或者取消定义。
常量只能包含标量数据(boolean,integer,float 和 string)。
可以简单的通过指定其名字来取得常量的值,不要在常量前面加上 $ 符号。
define定义全局常量,在任何地方都可以访问。
define不能在类中定义而const可以。
define可以采用任何表达式。如define('BIT_5', 1 << 5);
代码如下 | 复制代码 |
<?php |
define()与const()两者之间的区别:
内存空间的分配上。define进行宏定义的时候,不会分配内存空间,编译时会在main函数里进行替换,只是单纯的替换,不会进行任何检查,比如类型,语句结构等,即宏定义常量只是纯粹的置放关系,如#define null 0;编译器在遇到null时总是用0代替null它没有数据类型(还有疑问请找C语言书籍看预处理部分或者看MSDN.而const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查,所以const与define之间的区别在于const定义常量排除了程序之间的不安全性.
define定义全局常量,在任何地方都可以访问
const用于类成员变量定义,只能用类名访问不能更改要是初学这样显理解着就行别太钻牛角尖就行
static
php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。
静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。
static关键字在类中,描述一个成员是静态的,static能够限制外部的访问,因为static后的成员是属于类的,是不属于任何对象实例。
static的成员,必须使用self来访问。
代码如下 | 复制代码 |
class Counter |
最后补充一个例子:
代码如下 | 复制代码 |
<?php
class test { public static function set_name() { public static function set_name2() { // 1 // 2 // 3 // 4 // 5 // 6 // 7 |
原因分析
如果你程序有问题而我们执行时没有提醒错误,那么有几种可能
1.php.ini中错误提醒功能关闭,我们只要开启即可
找到display_errors = On 修改为 display_errors = off
2.在php程序相关页面也加了关闭错误报错功能,我们去掉相关代码即可
ini_set("display_errors", "On");
当然如果你没有权限来做这些操作我们可以使用echo 排查法来解决
代码如下 | 复制代码 |
<?php $action = $_GET['id']; if($action == '') $action = 1; if($action == 1) { echo("/$action's value is 1"); } else if($action == 2) { echo("/$action's value is 2"); } ?> |
如上图所示我们可以利用条件来判断当前所在位置 ,然后 一步步排查导致页面空白问题。
如我先做个测试我们php.ini
代码
代码如下 | 复制代码 |
$ch = curl_init(); |
错误提示
Fatal error: Call to undefined function curl_init() in E:/www/test.php on line 4
这个是告诉我们函数未定义了,这是php内置函数怎么可能未定义了呢,我们查看php.ini文件,发现如下状态
;extension=php_curl.dll
这个是未开启状态了,我们先去掉前面的;号了
extension=php_curl.dll
再重启apache然后再运行代码效果如下
//成功访问了www.111cn.net网站了
总结,其实使用curl是非常的简单的我们只要在php.ini中把extension=php_curl.dll前面的;号去掉即可。