<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>朱俊独立博客 &#187; PHP</title>
	<atom:link href="http://www.zhujun.org/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zhujun.org</link>
	<description>邪恶获得胜利的唯一条件，就是善良的人们保持沉默。</description>
	<lastBuildDate>Sun, 05 Feb 2012 06:34:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP学习笔记2 &#8211; 用文件来存取数据</title>
		<link>http://www.zhujun.org/web/php-study-notes-storing-retrieving-data/</link>
		<comments>http://www.zhujun.org/web/php-study-notes-storing-retrieving-data/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 10:45:51 +0000</pubDate>
		<dc:creator>朱俊</dc:creator>
				<category><![CDATA[网络开发]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://www.zhujun.org/?p=295</guid>
		<description><![CDATA[PHP学习笔记之存取数据部分，主要介绍了用文件而非数据库的方法保存和读取数据，包括打开、创建、关闭、读、写、锁、删除文件等内容。]]></description>
			<content:encoded><![CDATA[<p>PHP学习笔记第二章，主要包括打开/创建/关闭/锁定/删除文件，从文件中读/写数据等内容。<br />
<span id="more-295"></span></p>
<h3>一、打开文件</h3>
<p>文件操作的基本步骤是：打开文件&#8211;&gt;读/写文件&#8211;&gt;关闭文件，其中打开文件是第一步。</p>
<h4>1、使用 fopen() 打开文件</h4>
<p>fopen() 函数定义：<br />
<code>resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )</code></p>
<p>fopen() 函数示例：<br />
<code>$handle = fopen("/home/rasmus/file.txt", "r");<br />
$fp = fopen("$_SERVER['DOCUMENT_ROOT']/../orders/orders.txt",'w'); </code><br />
注意，使用绝对路径时，Linux下是/xxx/，而Windows下是x:\xxx\，一般推荐使用相对目录。</p>
<h4>2、打开文件模式</h4>
<p>和c语言类似，fopen()同样通过mode参数来确定打开文件的访问类型。</p>
<table>
<tbody>
<tr>
<th>mode</th>
<th>说明</th>
</tr>
<tr>
<td>&#8220;r&#8221;</td>
<td>只读方式打开，将文件指针指向文件头。</td>
</tr>
<tr>
<td>&#8220;r+&#8221;</td>
<td>读写方式打开，将文件指针指向文件头。</td>
</tr>
<tr>
<td>&#8220;w&#8221;</td>
<td>写入方式打开，将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。</td>
</tr>
<tr>
<td>&#8220;w+&#8221;</td>
<td>读写方式打开，将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。</td>
</tr>
<tr>
<td>&#8220;x&#8221;</td>
<td>创建并以写入方式打开，将文件指针指向文件头。如果文件已存在，则 fopen() 调用失败并返回 FALSE，并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。</td>
</tr>
<tr>
<td>&#8220;x+&#8221;</td>
<td>创建并以读写方式打开，将文件指针指向文件头。如果文件已存在，则 fopen() 调用失败并返回 FALSE，并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。</td>
</tr>
<tr>
<td>&#8220;a&#8221;</td>
<td>写入方式打开，将文件指针指向文件末尾。如果文件不存在则尝试创建之。</td>
</tr>
<tr>
<td>&#8220;a+&#8221;</td>
<td>读写方式打开，将文件指针指向文件末尾。如果文件不存在则尝试创建之。</td>
</tr>
<tr>
<td>&#8220;b&#8221;</td>
<td>和其它模式组合使用，以二进制方式打开文件，是推荐且默认的方式。</td>
</tr>
<tr>
<td>&#8220;a+&#8221;</td>
<td>和其它模式组合使用，以文本方式打开文件，只在Windows下有效，不推荐。</td>
</tr>
</tbody>
</table>
<h4>3、其它注意点</h4>
<ul>
<li>可以打开ftp和http协议的文件，也可以在php.ini关闭allow_url_fopen来禁止打开远程文件。</li>
<li>Linux打开文件必须注意该文件的读写权限问题。</li>
</ul>
<h3>二、读写文件</h3>
<p>打开文件后，可以用相关函数读取和写入数据。</p>
<h4>1、读取文件内容常用函数</h4>
<p><code>string fgets ( resource $handle [, int $length ] )</code>从文件指针开始读取一行，且最大长度不超过length，length默认为1024</p>
<p><code>string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )</code>同fgets，但会过滤除allowable_tags参数外的HTML和PHP的标签。</p>
<p><code>array fgetcsv ( resource $handle [, int $length [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape='\\']]]] )</code>同fgets，但解析 CSV 字段，返回数组。</p>
<p><code>string fgetc ( resource $handle )</code>从文件指针开始，读取一个字符。</p>
<p><code>string fread ( resource $handle , int $length )</code>从文件指针开始，读取指定长度的内容。</p>
<p><code>int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )</code>打开文件并读取整个文件内容至输出缓存，然后关闭文件。</p>
<p><code>int fpassthru ( resource $handle )</code>读取文件指针当前位置到文件结束的数据至输出缓存。</p>
<p><code>array file ( string $filename [, int $flags = 0 [, resource $context ]] )</code>将全部文件内容读入一个数组中，每行内容成为一个数组元素。</p>
<p><code>string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen = -1 ]]]] )</code>将全部文件内容读入一个字符串中。</p>
<h4>2、写文件常用函数</h4>
<p><code>int fwrite ( resource $handle , string $string [, int $length ] )</code>从文件指针开始，写入最大长度为参数length的字符串内容。</p>
<p><code>int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )</code>打开文件（如果不存在则创建文件），写入data，关闭文件，会覆盖原文件内容，除非指定FILE_APPEND参数。</p>
<h4>3、文件指针操作函数</h4>
<p><code>bool rewind ( resource $handle )</code>将文件指针的位置倒回文件的开头。</p>
<p><code>int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )</code>将文件指针的位置移动到参数whence和offset 所指定的位置。</p>
<p><code>int ftell ( resource $handle )</code>返回文件指针的位置，注意PHP的文件指针是从0开始计数的。</p>
<p><code>bool feof ( resource $handle )</code>判断文件指针是否已经指向文件末尾。</p>
<h3>三、其它文件操作相关函数</h3>
<p><code>bool fclose ( resource $handle )</code>关闭打开的文件。</p>
<p><code>bool file_exists ( string $filename )</code>检查文件或目录是否存在。</p>
<p><code>int filesize ( string $filename )</code>返回文件大小。</p>
<p><code>bool unlink ( string $filename [, resource $context ] )</code>删除指定文件。</p>
<p><code>bool flock ( resource $handle , int $operation [, int &amp;$wouldblock ] )</code>锁定文件，在NFS和FAT等文件系统上无效。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhujun.org/web/php-study-notes-storing-retrieving-data/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP学习笔记1 &#8211; 快速入门</title>
		<link>http://www.zhujun.org/web/php-study-notes-crash-course/</link>
		<comments>http://www.zhujun.org/web/php-study-notes-crash-course/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 07:48:38 +0000</pubDate>
		<dc:creator>朱俊</dc:creator>
				<category><![CDATA[网络开发]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://www.zhujun.org/?p=232</guid>
		<description><![CDATA[PHP学习笔记之快速入门部分，主要包括PHP基本语法、变量、常量、作用域、变量和数据类型相关函数、条件语句，运算符及优先级的概述。]]></description>
			<content:encoded><![CDATA[<p>第一章，主要通过C/C++程序员的角度，对PHP基本语法、变量、常量、变量与常量的作用域、运算符、运算符优先级、变量与类型相关函数、条件与循环控制语句等内容进行快速入门（Crash Course）。<br />
<span id="more-232"></span></p>
<h3>一、基本语法</h3>
<h4>1、PHP Tags &#8211; 区分HTML和PHP代码</h4>
<p class="b4list">共有四种：</p>
<ul>
<li>XML格式（最常用，推荐）:<br />
<code>&lt;?php echo '&lt;p&gt;Order processed.&lt;/p&gt;'; ?&gt;</code></li>
<li>短格式（需要开启short_open_tag参数）：<br />
<code>&lt;? echo '&lt;p&gt;Order processed.&lt;/p&gt;'; ?&gt;</code></li>
<li>Script脚本格式：<br />
<code>&lt;script language='php'&gt; echo '&lt;p&gt;Order processed.&lt;/p&gt;'; &lt;/script&gt;</code></li>
<li>ASP格式 （需要开启asp_tags参数，不推荐）：<br />
<code>&lt;% echo '&lt;p&gt;Order processed.&lt;/p&gt;'; %&gt;</code></li>
</ul>
<h4>2、代码注释</h4>
<ul>
<li>多行注释：/*&#8230;*/</li>
<li>单行注释：//&#8230; 或 #&#8230;</li>
</ul>
<h3>二、变量</h3>
<h4>1、命名规则</h4>
<ul>
<li>PHP的变量必须以 $ 字符开始</li>
<li>变量名由字母、数字和下划线组成，且不能以数字作为开头字符</li>
<li>PHP的变量名是区分大小写的（case sensitive）</li>
<li>函数名不区分大小写，且函数可以和变量同名（不够make sense）</li>
</ul>
<h4>2、数据类型</h4>
<p>PHP的有整型（Integer）、浮点型（Float）、字符串型（String）、布尔型（Boolean）、数组（Array）和对象（Object）六种常见的数据类型和空值（NULL）以及资源变量（Resource）。</p>
<p>PHP是一种弱类型（weakly typed）或者称为动态类型（dynamically typed）的语言，所以声明变量的时候无需显式指定类型，编译器会根据变量的值来自行决定变量类型。另外，变量也无需显式声明即能使用。</p>
<h4>3、变量的变量</h4>
<p>即可变变量，是指通过获取一个变量的值做为另外一个变量的名称来操作变量。<br />
<code>$varname = 'tireqty';<br />
$$varname = 5;<br />
等同于<br />
$tireqty = 5;</code></p>
<h3>三、常量</h3>
<h4>1、定义常量</h4>
<p><code>define('USER_NAME', 'admin');<br />
define('IS_ADMIN', TRUE); </code></p>
<h4>2、数据类型</h4>
<p>常量只有整型（Integer）、浮点型（Float）、字符串型（String）、布尔型（Boolean）四种数据类型。</p>
<h4>3、使用常量</h4>
<p>直接使用，无需使用 $ 前缀。</p>
<h3>四、变量与常量的作用域</h3>
<ul>
<li>内建的超全局（superglobal）变量，如$_POST和$_GET，在任何页面都可见。</li>
<li>常量一旦声明就是全局可见的，包括在函数外和函数内。</li>
<li>脚本中声明的全局变量在该脚本中全局可见，但不包括函数内，除非在函数内使用global关键字声明该变量为全局变量。如：<br />
<code>&lt;?php<br />
$a = 1;<br />
$b = 2;<br />
function Sum()<br />
{<br />
global $a, $b;	//申明在函数内使用全局变量<br />
$b = $a + $b;	//全局变量的赋值影响主程序的$b<br />
}<br />
Sum();<br />
echo $b;	//输出结果为 3<br />
?&gt;</code></li>
<li>多数PHP变量都是局部变量，在其作用域外无法引用，并且超出其作用域时自动销毁。</li>
<li>静态变量在超出范围后不销毁，再次使用时保持前值。</li>
</ul>
<h3>五、运算符</h3>
<h4>1、数学运算符</h4>
<p>包括“+、-、*、/、%（取模）”，同C语言。</p>
<h4>2、字符串运算符</h4>
<p>包括“.”，用来连接两个字符串。</p>
<h4>3、赋值与复合赋值运算符</h4>
<p>包括“=、+=、-=、*=、/=、%=、.=”，基本上类似于C语言。</p>
<h4>4、自增与自减运算符</h4>
<p>包括“++、- -”，同C语言，只要明白$a++和++$a的区别即可，没必要搞清楚(i++)+(++i)+(i++)等于多少，这种问题实际开发中不会碰到，只会出现在谭浩强的习题集中。</p>
<h4>5、引用运算符</h4>
<p><code>$a = 5;<br />
$b = &amp;$a;<br />
$a = 7; // $a 和 $b 都为7<br />
</code></p>
<h4>6、比较运算符</h4>
<p>包括“==、===、!=、!==、&lt;&gt;、&lt;、&gt;、&lt;=、&gt;=”。<br />
需要注意的是&#8221;7&#8243; == 7，返回TRUE ，而 7=== &#8220;7&#8243;返回False，因为“===” 要求值和数据类型都相等。</p>
<h4>7、逻辑运算符</h4>
<p>包括“!、&#038;&#038;、||、and、or、xor”，基本上同C语言。</p>
<h4>8、位运算符</h4>
<p>包括“~、&#038;、|、^、>>、<<”，同C语言。</p>
<h4>9、其它运算符</h4>
<ul>
<li>“,、new、->、(?:)” 同C语言</li>
<li>“@” 错误控制运算符，将其放置在一个 PHP 表达式之前，忽略该表达式可能产生的任何错误信息。</li>
<li>“` `” 执行运算符，注意这不是单引号，作用是尝试执行反引号中的命令。</li>
</ul>
<h3>六、运算符优先级</h3>
<p>类似于C语言，略，不必刻意记忆，不确定的可以多加点括号。</p>
<h3>七、变量与数据类型相关函数</h3>
<ul>
<li>string gettype(mixed var); //返回变量的数据类型</li>
<li>bool settype(mixed var, string type); //设置变量类型</li>
<li>bool is_array(mixed var); //判断变量是否是数组型</li>
<li>bool  is_long(mixed var); / is_int() / is_integer() //判断变量是否是整型</li>
<li>bool is_double(mixed var); / is_float() / is_real() //判断变量是否是浮点型</li>
<li>bool is_scalar(mixed var); //判断变量是否是布尔型、整型、浮点型或字符串型</li>
<li>bool is_callable(mixed var); //判断变量是否是一个函数名</li>
<li>类似的还有 is_string()、is_bool()、is_object()、is_resource()、is_null() 等</li>
<li>bool isset ( mixed var [, mixed var [, ...]]); //判断变量是否已定义</li>
<li>void unset ( mixed var [, mixed var [, ...]]); //销毁指定的变量</li>
<li>bool empty ( mixed var [, mixed var [, ...]]); //检查变量的值是否为空或0</li>
</ul>
<h3>八、条件与循环控制语句</h3>
<ul>
<li>if/elseif/else</li>
<li>switch</li>
<li>while/do&#8230;while</li>
<li>for/foreach</li>
<li>break</li>
</ul>
<p>上述条件及循环控制语句均类似于其它编程语言，略。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhujun.org/web/php-study-notes-crash-course/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PHP学习笔记</title>
		<link>http://www.zhujun.org/web/php-study-notes/</link>
		<comments>http://www.zhujun.org/web/php-study-notes/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 08:30:53 +0000</pubDate>
		<dc:creator>朱俊</dc:creator>
				<category><![CDATA[网络开发]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[学习笔记]]></category>

		<guid isPermaLink="false">http://www.zhujun.org/?p=221</guid>
		<description><![CDATA[主要包括作者以《PHP and MySQL Web Development 4th Edition》为参考书，学习PHP所记笔记的前言部分和全部PHP学习笔记的目录。]]></description>
			<content:encoded><![CDATA[<p>对于PHP，一直处于能看、能改、不能写的状态，世界杯结束以后，打算系统地学习一下PHP。<br />
参考书是 Luke Welling 和 Laura Thomson 编写的《PHP and MySQL Web Development 4th Edition》，此书被称为是PHP圣经，国内翻译的中文版叫做《PHP与MySQL WEB开发》，不过技术书籍还是看原版的好，表述清晰，还能顺便巩固一下英文。</p>
<p>前言部分，照例简单介绍了什么是PHP、MySQL，为什么要使用PHP/MySQL，以及它们的优点等等，迅速略过。</p>
<p class="b4list">紧接着是PHP5的新特性：</p>
<ul>
<li>更好的面向对象支持</li>
<li>更好的错误/异常处理</li>
<li>内置的SimpleXML来读取XML数据</li>
</ul>
<p>和PHP 5.3将要支持的新特性（成书于PHP 5.2时代），比如，命名空间namespaces （很重要）等等。<span id="more-221"></span></p>
<h3>PHP学习笔记目录</h3>
<ol>
<li><a href="/web/php-study-notes-crash-course/">PHP速成</a></li>
<li><a href="/web/php-study-notes-storing-retrieving-data/">用文件来存取数据</a></li>
<li>使用数组</li>
<li>字符串处理和正则表达式</li>
<li>使用函数以复用代码</li>
<li>面向对象的PHP</li>
<li>错误和异常处理</li>
<li>&#8230;&#8230;</li>
<li>待添加</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.zhujun.org/web/php-study-notes/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

