<?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://yutuo.net/category/program/php/feed" rel="self" type="application/rss+xml" />
	<link>http://yutuo.net</link>
	<description>匍匐地跪着，头仰得再高也无法显示你的高度；挺起胸脯站着，低下头，亦能显得伟岸！</description>
	<lastBuildDate>Sat, 04 Feb 2012 15:46:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHP使用DateTime来转换字符串</title>
		<link>http://yutuo.net/archives/3800cc54c67db854.html</link>
		<comments>http://yutuo.net/archives/3800cc54c67db854.html#comments</comments>
		<pubDate>Tue, 17 Jan 2012 14:04:43 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DateTime]]></category>

		<guid isPermaLink="false">http://yutuo.net/?p=155</guid>
		<description><![CDATA[　　在PHP5.3以前，只能使用strtotime来把字符转为时间，然后再用date()把时间格式化为自己想要的格式。这种情况下，如果一些特殊的时间字符串就无法直接处理了，必须自己写代码进行转换了。 　　在PHP5.3里，新加了一个DateTime类，它可以通过自己定义的格式来读取字符串，然后格式化输出。具体可以参考PHP的官方网站的介绍。 DateTime::createFromFormat http://www.php.net/manual/en/datetime.createfromformat.php DateTime::format http://www.php.net/manual/en/datetime.format.php测试代码如下： 12 $date&#160;= DateTime::createFromFormat('j-M-Y',&#160;'15-Feb-2009');echo&#160;$date-&#62;format('Y-m-d');]]></description>
			<content:encoded><![CDATA[<p>　　在PHP5.3以前，只能使用strtotime来把字符转为时间，然后再用date()把时间格式化为自己想要的格式。这种情况下，如果一些特殊的时间字符串就无法直接处理了，必须自己写代码进行转换了。</p>
<p>　　在PHP5.3里，新加了一个DateTime类，它可以通过自己定义的格式来读取字符串，然后格式化输出。具体可以参考PHP的官方网站的介绍。</p>
<p>DateTime::createFromFormat <a href="http://www.php.net/manual/en/datetime.createfromformat.php">http://www.php.net/manual/en/datetime.createfromformat.php</a></p>
<p>DateTime::format <a href="http://www.php.net/manual/en/datetime.format.php">http://www.php.net/manual/en/datetime.format.php</a><br />测试代码如下：</p>
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto; border-top: silver 1px solid; border-right: silver 1px solid" class="ytCode">
<table style="border-bottom: 0px; border-left: 0px; border-collapse: collapse; border-top: 0px; border-right: 0px">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><span style="color: #000080">$date</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span> DateTime</span><span style="color: #8000ff">::</span><span>createFromFormat</span><span style="color: #8000ff">(</span><span style="color: #808080">'j-M-Y'</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #808080">'15-Feb-2009'</span><span style="color: #8000ff">);</span><br /><b><span style="color: #0000ff">echo</span></b><span>&nbsp;</span><span style="color: #000080">$date</span><span style="color: #8000ff">-&gt;</span><span>format</span><span style="color: #8000ff">(</span><span style="color: #808080">'Y-m-d'</span><span style="color: #8000ff">);</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/3800cc54c67db854.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP中Xdebug的配置</title>
		<link>http://yutuo.net/archives/bebbf1bd6739f18c.html</link>
		<comments>http://yutuo.net/archives/bebbf1bd6739f18c.html#comments</comments>
		<pubDate>Sat, 27 Aug 2011 02:38:12 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Xdebug]]></category>

		<guid isPermaLink="false">http://yutuo.net/archives/bebbf1bd6739f18c.html</guid>
		<description><![CDATA[　　在一年之前，虽然学过一些PHP知识，但不会Debug，一般都是用echo来查看值对不对的。虽然PHP的Debug工具还有ZendDebug，但我觉得Xdebug更通用一些，Netbeans就支持Xdebug。废话不说了，说说配置过程。 1. 下载Xdebug下载地址：http://xdebug.org/download.php最新版本是2.1.2，版本很多，有32位和64位的区别，VC6和VC9的区别，以及线程安全与否的区别。下载的版本应该根据PHP来，把&#60;?PHP phpinfo(); ?&#62;保存到test.php，保存的服务器目录，通过浏览器打开。在最前面的Info中找到Compiler（没有的话是VC6的）、Architecture（没有话看Configure Command的值）和Thread Safety。如下图，应该下载32位VC9线程安全的（PHP 5.3 VC9 TS (32 bit)） 2. 安装Xdebug如果你已经配置好PHP，把下载好的文件改名为php_xdebug.dll（不改也没关系，只是为了好看），放下PHP安装目录的ext文件夹。 3. 配置XdebugXdebug的配置项目很多，我只了解很少的一部分，所以只说说常用的。修改PHP安装目录的php.ini文件，在文件最后插入以下代码： 12345678910 [XDebug]zend_extension = "ext/php_xdebug.dll"xdebug.auto_trace=on;xdebug.trace_output_dir="D:/php/xdebug/trace";xdebug.profiler_enable=on;xdebug.profiler_output_dir="D:/php/xdebug/profiler"xdebug.remote_enable=on;xdebug.remote_handler=dbgp;xdebug.remote_host=localhost;xdebug.remote_port=9000 因为我不希望有Log文件（因为那个文件增长很快，不两天有一两G了），所以把trace_output_dir和profiler_output_dir注释掉了，要注意的是Xdebug不会自动建目录的，必须保证设置的目录是实际存在的。至于其它的几个，都是默认值，所以注掉了，因为可能会改，所以列出来了。现在刷新一下phpinfo()的页面，应该就能看到Xdebug的信息了。 参考资料：http://www.cnblogs.com/hailexuexi/archive/2011/03/29/1998499.html]]></description>
			<content:encoded><![CDATA[<p>　　在一年之前，虽然学过一些PHP知识，但不会Debug，一般都是用echo来查看值对不对的。虽然PHP的Debug工具还有ZendDebug，但我觉得Xdebug更通用一些，Netbeans就支持Xdebug。废话不说了，说说配置过程。</p>
<p>1. 下载Xdebug<br />下载地址：<a href="http://xdebug.org/download.php">http://xdebug.org/download.php</a><br />最新版本是2.1.2，版本很多，有32位和64位的区别，VC6和VC9的区别，以及线程安全与否的区别。下载的版本应该根据PHP来，把<font color="#ff0000">&lt;?PHP phpinfo(); ?&gt;</font>保存到test.php，保存的服务器目录，通过浏览器打开。在最前面的Info中找到Compiler（没有的话是VC6的）、Architecture（没有话看Configure Command的值）和Thread Safety。如下图，应该下载32位VC9线程安全的（<a href="http://xdebug.org/files/php_xdebug-2.1.2-5.3-vc9.dll">PHP 5.3 VC9 TS (32 bit)</a>）<img src="http://yutuo.net/uploads/images/201108/20110827101939_03.gif"></p>
<p>2. 安装Xdebug<br />如果你已经配置好PHP，把下载好的文件改名为php_xdebug.dll（不改也没关系，只是为了好看），放下PHP安装目录的ext文件夹。</p>
<p>3. 配置Xdebug<br />Xdebug的配置项目很多，我只了解很少的一部分，所以只说说常用的。修改PHP安装目录的php.ini文件，在文件最后插入以下代码： </p>
<div style="padding-bottom: 17px; line-height: 130%; overflow-y: hidden; width: 98%; overflow: auto">
<table style="border-bottom: silver 1px solid; border-left: silver 1px solid; border-collapse: collapse; border-top: silver 1px solid; border-right: silver 1px solid">
<tbody>
<tr>
<td style="text-align: right; padding-bottom: 2px; background-color: #def; padding-left: 10px; padding-right: 4px; color: gray; vertical-align: top; overflow: visible; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></code></td>
<td style="background-color: #6ce26c; padding-left: 3px"></td>
<td style="padding-bottom: 2px; background-color: #f9f9f9; padding-left: 3px; width: 100%; padding-right: 4px; vertical-align: top; padding-top: 3px"><code style="font-family: consolas, courier new, monospace; white-space: nowrap; font-size: 12px"><b><span style="color: #8000ff">[XDebug]</span></b><br /><span>zend_extension </span><b><span style="color: #ff0000">=</span></b><span> "ext/php_xdebug.dll"</span><br /><span>xdebug.auto_trace</span><b><span style="color: #ff0000">=</span></b><span>on</span><br /><span style="color: #008000">;xdebug.trace_output_dir="D:/php/xdebug/trace"</span><br /><span style="color: #008000">;xdebug.profiler_enable=on</span><br /><span style="color: #008000">;xdebug.profiler_output_dir="D:/php/xdebug/profiler"</span><br /><span>xdebug.remote_enable</span><b><span style="color: #ff0000">=</span></b><span>on</span><br /><span style="color: #008000">;xdebug.remote_handler=dbgp</span><br /><span style="color: #008000">;xdebug.remote_host=localhost</span><br /><span style="color: #008000">;xdebug.remote_port=9000</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>因为我不希望有Log文件（因为那个文件增长很快，不两天有一两G了），所以把trace_output_dir和profiler_output_dir注释掉了，要注意的是Xdebug不会自动建目录的，必须保证设置的目录是实际存在的。至于其它的几个，都是默认值，所以注掉了，因为可能会改，所以列出来了。现在刷新一下phpinfo()的页面，应该就能看到Xdebug的信息了。</p>
<p>参考资料：<a href="http://www.cnblogs.com/hailexuexi/archive/2011/03/29/1998499.html">http://www.cnblogs.com/hailexuexi/archive/2011/03/29/1998499.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/bebbf1bd6739f18c.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows下Apache安装PHP</title>
		<link>http://yutuo.net/archives/84c3aadbdd53fed6.html</link>
		<comments>http://yutuo.net/archives/84c3aadbdd53fed6.html#comments</comments>
		<pubDate>Sun, 14 Aug 2011 16:01:04 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://yutuo.net/archives/84c3aadbdd53fed6.html</guid>
		<description><![CDATA[1. 安装Apache，已经安装好了的话，可以直接看下一步。①下载地址：http://httpd.apache.org/download.cgi②最新版是2.2.19，可以下载带SSL的，也可下载不带的，下载好后安装就行。③配置的话，只要修改httpd.conf的DocumentRoot或者Directory来修改网站根目录；通过修乞讨DirectoryIndex来修改默认显示文件。 2. 下载PHP，已经下载好的话，直接下一步①下载地址如下：http://windows.php.net/download/②Apache下要选择VC6版本的，因为只是个人用的，所以最好选择线程安全的。每启动一个线程时的检查时间对于个人测试来说，应该是可以忽略不计的，在出错时，只需要去检查程序即可，不需要查看是不是线程引起的问题。③因为是自己配置，所以下载VC6 x86 Thread Safe的ZIP版本就好，现在最新版本是5.2.17。 3. 配置PHP①把下载好的ZIP文件解压到一个文件夹，比如C:\PHP，下文称之为PHP目录。②把PHP目录下的php.ini-development改名为php.ini，并打开它。③打开扩展目录配置extension_dir，即把 extension_dir = “ext”前的分去掉。④打开扩展配置，我觉得php_mbstring是必须的，其它的可以自选。⑤修改时区。date.timezone = “Asia/Shanghai”⑥修改mbstring配置，这个根据自己的情况改，如果只是测试用的话，不改也没关系。⑦修改好后可以运行CMD，进入PHP目录，执行php –version，如果配置不对的话，就会有警告。 4. 配置Apache和PHP的转接①把php5ts.dll和libmysql.dll复制到Windows目录，或者把PHP目录添加到环境变量PATH里。②修改Apache的httpd.conf文件，添加以下三行： 1234 LoadModule php5_module C:/PHP/php5apache2.dllPHPIniDir "C:/PHP"&#160;AddType application/x-httpd-php .php ③ 保存httpd.conf文件，重启Apache，然后可以自己写一个PHP测试文件测试一下。代码&#60;?PHP phpinfo(); ?&#62;]]></description>
			<content:encoded><![CDATA[<p><strong>1. 安装Apache</strong>，已经安装好了的话，可以直接看下一步。<br />①下载地址：<a title="http://httpd.apache.org/download.cgi" href="http://httpd.apache.org/download.cgi">http://httpd.apache.org/download.cgi</a><br />②最新版是2.2.19，可以下载带SSL的，也可下载不带的，下载好后安装就行。<br />③配置的话，只要修改httpd.conf的DocumentRoot或者Directory来修改网站根目录；通过修乞讨DirectoryIndex来修改默认显示文件。
<p><strong>2. 下载PHP</strong>，已经下载好的话，直接下一步<br />①下载地址如下：<a href="http://windows.php.net/download/">http://windows.php.net/download/</a><br />②Apache下要选择VC6版本的，因为只是个人用的，所以最好选择线程安全的。每启动一个线程时的检查时间对于个人测试来说，应该是可以忽略不计的，在出错时，只需要去检查程序即可，不需要查看是不是线程引起的问题。<br />③因为是自己配置，所以下载VC6 x86 Thread Safe的ZIP版本就好，现在最新版本是5.2.17。
<p><strong>3. 配置PHP</strong><br />①把下载好的ZIP文件解压到一个文件夹，比如C:\PHP，下文称之为PHP目录。<br />②把PHP目录下的php.ini-development改名为php.ini，并打开它。<br />③打开扩展目录配置extension_dir，即把 extension_dir = “ext”前的分去掉。<br />④打开扩展配置，我觉得php_mbstring是必须的，其它的可以自选。<br />⑤修改时区。date.timezone = “Asia/Shanghai”<br />⑥修改mbstring配置，这个根据自己的情况改，如果只是测试用的话，不改也没关系。<br />⑦修改好后可以运行CMD，进入PHP目录，执行php –version，如果配置不对的话，就会有警告。
<p><strong>4. 配置Apache和PHP的转接</strong><br />①把php5ts.dll和libmysql.dll复制到Windows目录，或者把PHP目录添加到环境变量PATH里。<br />②修改Apache的httpd.conf文件，添加以下三行：</p>
<div style="padding-bottom: 17px;line-height: 130%;width: 98%;overflow: auto">
<table style="border-bottom: silver 1px solid;border-left: silver 1px solid;border-collapse: collapse;border-top: silver 1px solid;border-right: silver 1px solid">
<tbody>
<tr>
<td style="text-align: right;padding-bottom: 2px;background-color: #def;padding-left: 10px;padding-right: 4px;color: gray;vertical-align: top;overflow: visible;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px">1<br />2<br />3<br />4<br /></code></td>
<td style="background-color: #6ce26c;padding-left: 3px"></td>
<td style="padding-bottom: 2px;background-color: #f9f9f9;padding-left: 3px;width: 100%;padding-right: 4px;vertical-align: top;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px"><span>LoadModule php5_module C:/PHP/php5apache2.dll</span><br /><span>PHPIniDir "C:/PHP"</span><br />&nbsp;<br /><span>AddType application/x-httpd-php .php</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>③ 保存httpd.conf文件，重启Apache，然后可以自己写一个PHP测试文件测试一下。代码&lt;?PHP phpinfo(); ?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/84c3aadbdd53fed6.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows7下IIS中以FastCgi安装PHP</title>
		<link>http://yutuo.net/archives/b329b24d9fd83e93.html</link>
		<comments>http://yutuo.net/archives/b329b24d9fd83e93.html#comments</comments>
		<pubDate>Sun, 14 Aug 2011 15:01:54 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[Windows7]]></category>

		<guid isPermaLink="false">http://yutuo.net/archives/b329b24d9fd83e93.html</guid>
		<description><![CDATA[其实很久就想把这些步骤记下来，结果每每都忘记了，每次重装系统又得去网上找一遍。 1. 安装IIS，已经安装好了的话，可以直接看下一步。①打开“我的电脑”，点击上面的“卸载与更改程序”，在出现的新窗口中点击“打开或关闭Windows功能”。②在新出现的“Windows功能”窗口，选择“Internet信息服务”，在注意的是“Internet信息服务”下的“应用程序开发功能”下的“CGI”必须选中。③然后确定就行了。 2. 下载PHP，已经下载好的话，直接下一步①下载地址如下：http://windows.php.net/download/②IIS的情况下要选择VC9版本的，因为只是个人用的，所以最好选择线程安全的。每启动一个线程时的检查时间对于个人测试来说，应该是可以忽略不计的，在出错时，只需要去检查程序即可，不需要查看是不是线程引起的问题。③因为是自己配置，所以下载VC9 x86 Thread Safe的ZIP版本就好，现在最新版本是5.3.6。 3. 配置PHP①把下载好的ZIP文件解压到一个文件夹，比如C:\PHP，下文称之为PHP目录。②把PHP目录下的php.ini-development改名为php.ini，并打开它。③打开扩展目录配置extension_dir，即把 extension_dir = "ext"前的分去掉。④打开扩展配置，我觉得php_mbstring是必须的，其它的可以自选。⑤修改时区。date.timezone = "Asia/Shanghai"⑥修改mbstring配置，这个根据自己的情况改，如果只是测试用的话，不改也没关系。⑦修改好后可以运行CMD，进入PHP目录，执行php –version，如果配置不对的话，就会有警告。 4. 配置IIS和PHP的转接①“控制面板”里点击“系统和安全”，在新的画面里点击右边下部的“管理工具”，在新窗口里点击“Internet信息服务(IIS)管理器”。②在新打开的“Internet信息服务(IIS)管理器”中，双击“处理程序映射”，在新出现的画面的右上角点击“添加模块映射”。③在添加模块映射画面，内容如下。请求路役：*.php；模块：FastCgiModule；可执行文件：选择PHP目录的php-cgi.exe，如C:\PHP\php-cgi.exe；名称：PHP（这个可以自己随便）。请求限制可加可不加，加的话，一般把谓词设为GET,HEAD,POST。④确定，然后可以自己写一个PHP测试文件测试一下。代码&#60;?PHP phpinfo(); ?&#62;]]></description>
			<content:encoded><![CDATA[<p>其实很久就想把这些步骤记下来，结果每每都忘记了，每次重装系统又得去网上找一遍。</p>
<p><strong>1. 安装IIS</strong>，已经安装好了的话，可以直接看下一步。<br />①打开“我的电脑”，点击上面的“卸载与更改程序”，在出现的新窗口中点击“打开或关闭Windows功能”。<br />②在新出现的“Windows功能”窗口，选择“Internet信息服务”，在注意的是“Internet信息服务”下的“应用程序开发功能”下的“CGI”必须选中。<br />③然后确定就行了。</p>
<p><strong>2. 下载PHP</strong>，已经下载好的话，直接下一步<br />①下载地址如下：<a title="http://windows.php.net/download/" href="http://windows.php.net/download/">http://windows.php.net/download/</a><br />②IIS的情况下要选择VC9版本的，因为只是个人用的，所以最好选择线程安全的。每启动一个线程时的检查时间对于个人测试来说，应该是可以忽略不计的，在出错时，只需要去检查程序即可，不需要查看是不是线程引起的问题。<br />③因为是自己配置，所以下载VC9 x86 Thread Safe的ZIP版本就好，现在最新版本是5.3.6。</p>
<p><strong>3. 配置PHP</strong><br />①把下载好的ZIP文件解压到一个文件夹，比如C:\PHP，下文称之为PHP目录。<br />②把PHP目录下的php.ini-development改名为php.ini，并打开它。<br />③打开扩展目录配置extension_dir，即把 extension_dir = "ext"前的分去掉。<br />④打开扩展配置，我觉得php_mbstring是必须的，其它的可以自选。<br />⑤修改时区。date.timezone = "Asia/Shanghai"<br />⑥修改mbstring配置，这个根据自己的情况改，如果只是测试用的话，不改也没关系。<br />⑦修改好后可以运行CMD，进入PHP目录，执行php –version，如果配置不对的话，就会有警告。</p>
<p><strong>4. 配置IIS和PHP的转接</strong><br />①“控制面板”里点击“系统和安全”，在新的画面里点击右边下部的“管理工具”，在新窗口里点击“Internet信息服务(IIS)管理器”。<br />②在新打开的“Internet信息服务(IIS)管理器”中，双击“处理程序映射”，在新出现的画面的右上角点击“添加模块映射”。<br />③在添加模块映射画面，内容如下。请求路役：*.php；模块：FastCgiModule；可执行文件：选择PHP目录的php-cgi.exe，如C:\PHP\php-cgi.exe；名称：PHP（这个可以自己随便）。请求限制可加可不加，加的话，一般把谓词设为GET,HEAD,POST。<br />④确定，然后可以自己写一个PHP测试文件测试一下。代码&lt;?PHP phpinfo(); ?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/b329b24d9fd83e93.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP学习(18) 性能</title>
		<link>http://yutuo.net/archives/7ec96c2767a701ea.html</link>
		<comments>http://yutuo.net/archives/7ec96c2767a701ea.html#comments</comments>
		<pubDate>Thu, 21 Jul 2011 13:42:17 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://yutuo.net/archives/7ec96c2767a701ea.html</guid>
		<description><![CDATA[　　PHP和其它语言一样，一种好的写法可能速度会快很多。虽然实现的功能是一样的。 　　现在很多人都去看程序哪个地方循环次数多了，哪个地方转换算法不好了。其实对于访问量不是很大的网站，这样都不是最主要影响速度的地方。最主要影响速度的地方，一是访问文件，二是访问数据库。只要在程序中尽可能地减少两者的访问次数，大多数情况下都能应付过去了。 　　在PHP中，也有一些要注意的地方，如果能用数字时不要用字符串；写循环语句时不要把计算函数写到语句里（如：for($i = 0; $i &#60; count($array); $i++)就不太好，for($i = 0; $i &#60; $array_count; $i++)就要好一些）。至于其它的好像就是算法方面的知识了。 　　对于性能还是一句话，在性能调优时，首先要改的应该是文件访问或者数据库访问，如果多次访问同一个值，应该把它保存在内存里，然后才是算法的调优，最后才是程序细节的调优。 参考资料：PHP程序设计，2003，第十三章 应用技术]]></description>
			<content:encoded><![CDATA[<p>　　PHP和其它语言一样，一种好的写法可能速度会快很多。虽然实现的功能是一样的。</p>
<p>　　现在很多人都去看程序哪个地方循环次数多了，哪个地方转换算法不好了。其实对于访问量不是很大的网站，这样都不是最主要影响速度的地方。最主要影响速度的地方，一是访问文件，二是访问数据库。只要在程序中尽可能地减少两者的访问次数，大多数情况下都能应付过去了。</p>
<p>　　在PHP中，也有一些要注意的地方，如果能用数字时不要用字符串；写循环语句时不要把计算函数写到语句里（如：for($i = 0; $i &lt; count($array); $i++)就不太好，for($i = 0; $i &lt; $array_count; $i++)就要好一些）。至于其它的好像就是算法方面的知识了。</p>
<p>　　对于性能还是一句话，在性能调优时，首先要改的应该是文件访问或者数据库访问，如果多次访问同一个值，应该把它保存在内存里，然后才是算法的调优，最后才是程序细节的调优。</p>
<p>参考资料：<br />PHP程序设计，2003，第十三章 应用技术</p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/7ec96c2767a701ea.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP学习(17) 安全</title>
		<link>http://yutuo.net/archives/0144072a72d93606.html</link>
		<comments>http://yutuo.net/archives/0144072a72d93606.html#comments</comments>
		<pubDate>Tue, 19 Jul 2011 14:52:59 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://yutuo.net/archives/0144072a72d93606.html</guid>
		<description><![CDATA[　　本章将介绍一些可能导致不安全的常见问题。如变量、文件名、文件上传以及eval()函数。这其中大多数问题都可以在编码时解决，一些可以通过改变PHP配置解决。 1. 变量当PHP.ini文件的register_globals打开时，PHP会把POST和cookie自动生成变量。如果变量不初始化，register_globals打开时很容易出现安全问题。如下面的代码，如果打开register_globals的话，用page.php?superuser=1来访问就可以取得管理权限。 123 if&#160;(is_admin())&#160;{&#160;&#160;&#160; $superuser&#160;=&#160;true;} 2. 文件名安全在打开文件，包含文件时，要注意不能使用用户提交的数据。如：include(“/var/html/$page”);当用户提交的数据$page为../../etc/passwd时就能查看个人密码了 3. 上传文件上传文件时，文件保存时对浏览器提供的文件名要进行检查，因为在浏览器端修改提交的文件名还是不太难的。 4. 文件权限在新建文件时，应该先改权限再建文件，而不应该先写文件再改权限。因为在修改权限之前很短的时间里，很可能会被其它人所访问。 应该用unask(077)函数来禁止其它权限。 5. PHP代码函数eval在使用eval()函数和带/e选项的preg_replace时，如果允许用户数据时，很可能会出安全问题。最好的方法是少用eval。如果一定要用，要注意参数不能为用户提交的数据。同样exec(), system(), popen(), passthru()和``都最好不要用用户提交的数据做为参数。 参考资料：PHP程序设计，2003，第十二章 安全]]></description>
			<content:encoded><![CDATA[<p>　　本章将介绍一些可能导致不安全的常见问题。如变量、文件名、文件上传以及eval()函数。这其中大多数问题都可以在编码时解决，一些可以通过改变PHP配置解决。</p>
<p><strong>1. 变量</strong><br />当PHP.ini文件的register_globals打开时，PHP会把POST和cookie自动生成变量。如果变量不初始化，register_globals打开时很容易出现安全问题。如下面的代码，如果打开register_globals的话，用page.php?superuser=1来访问就可以取得管理权限。</p>
<div style="padding-bottom: 17px;line-height: 130%;width: 98%;overflow: auto">
<table style="border-bottom: silver 1px solid;border-left: silver 1px solid;border-collapse: collapse;border-top: silver 1px solid;border-right: silver 1px solid">
<tbody>
<tr>
<td style="text-align: right;padding-bottom: 2px;background-color: #def;padding-left: 10px;padding-right: 4px;color: gray;vertical-align: top;overflow: visible;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px">1<br />2<br />3<br /></code></td>
<td style="background-color: #6ce26c;padding-left: 3px"></td>
<td style="padding-bottom: 2px;background-color: #f9f9f9;padding-left: 3px;width: 100%;padding-right: 4px;vertical-align: top;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px"><b><span style="color: #0000ff">if</span></b><span>&nbsp;</span><span style="color: #8000ff">(</span><span>is_admin</span><span style="color: #8000ff">())</span><span>&nbsp;</span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #000080">$superuser</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><b><span style="color: #0000ff">true</span></b><span style="color: #8000ff">;</span><br /><span style="color: #8000ff">}</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p><strong>2. 文件名安全</strong><br />在打开文件，包含文件时，要注意不能使用用户提交的数据。如：include(“/var/html/$page”);当用户提交的数据$page为../../etc/passwd时就能查看个人密码了</p>
<p><strong>3. 上传文件</strong><br />上传文件时，文件保存时对浏览器提供的文件名要进行检查，因为在浏览器端修改提交的文件名还是不太难的。</p>
<p><strong>4. 文件权限</strong><br />在新建文件时，应该先改权限再建文件，而不应该先写文件再改权限。因为在修改权限之前很短的时间里，很可能会被其它人所访问。 应该用unask(077)函数来禁止其它权限。</p>
<p><strong>5. PHP代码函数eval</strong><br />在使用eval()函数和带/e选项的preg_replace时，如果允许用户数据时，很可能会出安全问题。最好的方法是少用eval。如果一定要用，要注意参数不能为用户提交的数据。同样exec(), system(), popen(), passthru()和``都最好不要用用户提交的数据做为参数。</p>
<p>参考资料：<br />PHP程序设计，2003，第十二章 安全</p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/0144072a72d93606.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP学习(16) WEB技术</title>
		<link>http://yutuo.net/archives/b3898f3c7251a95b.html</link>
		<comments>http://yutuo.net/archives/b3898f3c7251a95b.html#comments</comments>
		<pubDate>Mon, 11 Jul 2011 13:57:22 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://yutuo.net/archives/b3898f3c7251a95b.html</guid>
		<description><![CDATA[PHP在大多数场合都是用于WEB方法的应用，比如网站。虽然PHP的功能远不止于WEB应用。下面介绍一些PHP在WEB方法的功能和内容。 1. 变量 　　在PHP中，有以下几个全局变量：$_COOKIE, $_ENV, $_FILES, $_GET, $_POST, $_REQUEST, $_SERVER, $_SESSION。其中$_ENV,$_SERVER主要保存服务器的环境变量；$_COOKIE, $_SESSION保存用户信息数据；$_FILES, $_GET, $_POST, $_REQUEST保存用户提交表单的数据。 2. 表单处理 　　表单在WEB应用中非常重要，用户的交互主要就是用表单实现的。关于表单FROM的实现可以去看看HTML方面的书籍。这里只说一些注意的地方。 A.在PHP配置文件php.ini中，magic_quote_gpc默认是打开的。这样的话，PHP会把提交的数据自动运行addslashes()。这种情况下，读取数据要注意。可以使用以下语句读取：$value = ini_get('magic_quote_gpc') ? stripslashes($_POST['word']) : $_POST['word']; B.粘性表单，及输入值提交后，如果输入值有什么问题没有跳转到下一个页面，应该保持以前输入的值。现在，几乎现在所有的网站都是粘性表单。 C.数组提交。在表单名定义时，在名后加上[]，可以实现数组提交。如：&#60;input type="checkbox" name="aaa[]" value="1"/&#62;&#60;input type="checkbox" name="aaa[]" value="2"/&#62; D.文件提交。文件能够提交的最大大小为配置文件php.ini中upload_max_filesize定义的大小。在每一个表单中，也可以用MAX_FILE_SIZE来定义本表单中文件最大大小，其中MAX_FILE_SIZE要比upload_max_filesize小才有意义。$_FILE数组有以下几个值：name 客户端文件名；type MIME类型；size 文件大小；tmp_name 临时文件名 3. 设置响应头 PHP中，可以用header()函数来设置响应头。如重定向可以写为header('Location: http://www.google.com/');不保存缓存可以写为：header("Expires: Mon, 26 Jul 1970 05:00:00&#160; GMT");header("Last-Modified:" . gmdate("D, d M Y&#160; H:i:s")&#160; . [...]]]></description>
			<content:encoded><![CDATA[<p>PHP在大多数场合都是用于WEB方法的应用，比如网站。虽然PHP的功能远不止于WEB应用。下面介绍一些PHP在WEB方法的功能和内容。</p>
<p><strong>1. 变量</strong></p>
<p>　　在PHP中，有以下几个全局变量：$_COOKIE, $_ENV, $_FILES, $_GET, $_POST, $_REQUEST, $_SERVER, $_SESSION。其中$_ENV,$_SERVER主要保存服务器的环境变量；$_COOKIE, $_SESSION保存用户信息数据；$_FILES, $_GET, $_POST, $_REQUEST保存用户提交表单的数据。</p>
<p><strong>2. 表单处理</strong></p>
<p>　　表单在WEB应用中非常重要，用户的交互主要就是用表单实现的。关于表单FROM的实现可以去看看HTML方面的书籍。这里只说一些注意的地方。</p>
<p>A.在PHP配置文件php.ini中，magic_quote_gpc默认是打开的。这样的话，PHP会把提交的数据自动运行addslashes()。这种情况下，读取数据要注意。可以使用以下语句读取：<br />$value = ini_get('magic_quote_gpc') ? stripslashes($_POST['word']) : $_POST['word'];</p>
<p>B.粘性表单，及输入值提交后，如果输入值有什么问题没有跳转到下一个页面，应该保持以前输入的值。现在，几乎现在所有的网站都是粘性表单。</p>
<p>C.数组提交。在表单名定义时，在名后加上[]，可以实现数组提交。如：<br />&lt;input type="checkbox" name="aaa[]" value="1"/&gt;<br />&lt;input type="checkbox" name="aaa[]" value="2"/&gt;</p>
<p>D.文件提交。文件能够提交的最大大小为配置文件php.ini中upload_max_filesize定义的大小。在每一个表单中，也可以用MAX_FILE_SIZE来定义本表单中文件最大大小，其中MAX_FILE_SIZE要比upload_max_filesize小才有意义。<br />$_FILE数组有以下几个值：name 客户端文件名；type MIME类型；size 文件大小；tmp_name 临时文件名</p>
<p><strong>3. 设置响应头</strong></p>
<p>PHP中，可以用header()函数来设置响应头。如重定向可以写为header('Location: <a href="http://www.google.com/'">http://www.google.com/'</a>);不保存缓存可以写为：<br />header("Expires: Mon, 26 Jul 1970 05:00:00&nbsp; GMT");<br />header("Last-Modified:" . gmdate("D, d M Y&nbsp; H:i:s")&nbsp; . "GMT");<br />header("Cache-Control:no-store, no-cache, must-revalidate"); <br />header("Pragma:no-cache");</p>
<p>参考资料：<br />PHP程序设计，2003，第七章 WEB技术</p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/b3898f3c7251a95b.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP学习(15) 对象</title>
		<link>http://yutuo.net/archives/7df17b8546a13725.html</link>
		<comments>http://yutuo.net/archives/7df17b8546a13725.html#comments</comments>
		<pubDate>Sun, 01 May 2011 12:38:45 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://yutuo.net/archives/7df17b8546a13725.html</guid>
		<description><![CDATA[PHP中的对象相对其它语言，比如Java、C#来说要简单很多。它没有重载（不能存在相同的方法名），继承也相对简单。 1.声明类类的声明主要包括类本身的声明以及方法、属性、继承、构造函数的声明。这些东西说起来一堆，看代码就很简单了。看如下代码。 1234567891011121314151617181920212223242526 class Person {&#160;&#160;&#160; // 声明属性&#160;&#160;&#160; var&#160;$name;&#160;&#160;&#160;&#160; // 给属性设置默认值。默认值只能是简单的常量，不能有计算。&#160;&#160;&#160; var&#160;$age&#160;=&#160;20;&#160;&#160;&#160; // 构造函数&#160;&#160;&#160; function Person($name,&#160;$age)&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160; $this-&#62;name =&#160;$name;&#160;&#160;&#160;&#160;&#160;&#160;&#160; $this-&#62;age =&#160;$age;&#160;&#160;&#160; }}// 子类的声明class Employee extends Person {&#160;&#160;&#160; var&#160;$salary;&#160;&#160;&#160; // 构造函数&#160;&#160;&#160; function Employee($name,&#160;$age,&#160;$salary)&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160; // 调用父类构造函数&#160;&#160;&#160;&#160;&#160;&#160;&#160; $this-&#62;Person($name,&#160;$age);&#160;&#160;&#160;&#160;&#160;&#160;&#160; $this-&#62;salary =&#160;$salary;&#160;&#160;&#160; }&#160;&#160;&#160; // 方法声明&#160;&#160;&#160; function add_salary($add)&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160; $this-&#62;salary +=&#160;$add;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return&#160;$this-&#62;salary;&#160;&#160;&#160; }} 2.创建和访问对象在PHP中，可以使用$object = new Class;来创建对象。其中类名可以直接写，也可以用变量表示。访问对象用-&#62;。比如访问属性$object-&#62;propertyname,访问方法$object-&#62;mathodname();可以看如下代码。 123456789 // 直接用类名创建对象$employ&#160;=&#160;new Employee( 'Dick',&#160;20,&#160;3000);// 用变量创建对象$class_name&#160;=&#160;'Employee';$employ&#160;=&#160;new&#160;$class_name('Dick',&#160;20,&#160;3000);// [...]]]></description>
			<content:encoded><![CDATA[<p>PHP中的对象相对其它语言，比如Java、C#来说要简单很多。它没有重载（不能存在相同的方法名），继承也相对简单。</p>
<p><strong>1.声明类</strong><br />类的声明主要包括类本身的声明以及方法、属性、继承、构造函数的声明。这些东西说起来一堆，看代码就很简单了。看如下代码。</p>
<div style="padding-bottom: 17px;line-height: 130%;width: 98%;overflow: auto">
<table style="border-bottom: silver 1px solid;border-left: silver 1px solid;border-collapse: collapse;border-top: silver 1px solid;border-right: silver 1px solid">
<tbody>
<tr>
<td style="text-align: right;padding-bottom: 2px;background-color: #def;padding-left: 10px;padding-right: 4px;color: gray;vertical-align: top;overflow: visible;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></code></td>
<td style="background-color: #6ce26c;padding-left: 3px"></td>
<td style="padding-bottom: 2px;background-color: #f9f9f9;padding-left: 3px;width: 100%;padding-right: 4px;vertical-align: top;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px"><b><span style="color: #0000ff">class</span></b><span> Person </span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// </span><span style="color: #008000">声明属性</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">var</span></b><span>&nbsp;</span><span style="color: #000080">$name</span><span style="color: #8000ff">;</span><span>&nbsp;</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// </span><span style="color: #008000">给属性设置默认值。默认值只能是简单的常量，不能有计算。</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">var</span></b><span>&nbsp;</span><span style="color: #000080">$age</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><span style="color: #ff8000">20</span><span style="color: #8000ff">;</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// </span><span style="color: #008000">构造函数</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">function</span></b><span> Person</span><span style="color: #8000ff">(</span><span style="color: #000080">$name</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #000080">$age</span><span style="color: #8000ff">)</span><span>&nbsp;</span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000080">$this</span><span style="color: #8000ff">-&gt;</span><span>name </span><span style="color: #8000ff">=</span><span>&nbsp;</span><span style="color: #000080">$name</span><span style="color: #8000ff">;</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000080">$this</span><span style="color: #8000ff">-&gt;</span><span>age </span><span style="color: #8000ff">=</span><span>&nbsp;</span><span style="color: #000080">$age</span><span style="color: #8000ff">;</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">}</span><br /><span style="color: #8000ff">}</span><br /><span style="color: #008000">// </span><span style="color: #008000">子类的声明</span><br /><b><span style="color: #0000ff">class</span></b><span> Employee </span><b><span style="color: #0000ff">extends</span></b><span> Person </span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">var</span></b><span>&nbsp;</span><span style="color: #000080">$salary</span><span style="color: #8000ff">;</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// </span><span style="color: #008000">构造函数</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">function</span></b><span> Employee</span><span style="color: #8000ff">(</span><span style="color: #000080">$name</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #000080">$age</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #000080">$salary</span><span style="color: #8000ff">)</span><span>&nbsp;</span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// </span><span style="color: #008000">调用父类构造函数</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000080">$this</span><span style="color: #8000ff">-&gt;</span><span>Person</span><span style="color: #8000ff">(</span><span style="color: #000080">$name</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #000080">$age</span><span style="color: #8000ff">);</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000080">$this</span><span style="color: #8000ff">-&gt;</span><span>salary </span><span style="color: #8000ff">=</span><span>&nbsp;</span><span style="color: #000080">$salary</span><span style="color: #8000ff">;</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">}</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #008000">// </span><span style="color: #008000">方法声明</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">function</span></b><span> add_salary</span><span style="color: #8000ff">(</span><span style="color: #000080">$add</span><span style="color: #8000ff">)</span><span>&nbsp;</span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #000080">$this</span><span style="color: #8000ff">-&gt;</span><span>salary </span><span style="color: #8000ff">+=</span><span>&nbsp;</span><span style="color: #000080">$add</span><span style="color: #8000ff">;</span><br /><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">return</span></b><span>&nbsp;</span><span style="color: #000080">$this</span><span style="color: #8000ff">-&gt;</span><span>salary</span><span style="color: #8000ff">;</span><br /><span>&nbsp;&nbsp;&nbsp; </span><span style="color: #8000ff">}</span><br /><span style="color: #8000ff">}</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p><strong>2.创建和访问对象</strong><br />在PHP中，可以使用$object = new Class;来创建对象。其中类名可以直接写，也可以用变量表示。访问对象用-&gt;。比如访问属性$object-&gt;propertyname,访问方法$object-&gt;mathodname();可以看如下代码。</p>
<div style="padding-bottom: 17px;line-height: 130%;width: 98%;overflow: auto">
<table style="border-bottom: silver 1px solid;border-left: silver 1px solid;border-collapse: collapse;border-top: silver 1px solid;border-right: silver 1px solid">
<tbody>
<tr>
<td style="text-align: right;padding-bottom: 2px;background-color: #def;padding-left: 10px;padding-right: 4px;color: gray;vertical-align: top;overflow: visible;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></code></td>
<td style="background-color: #6ce26c;padding-left: 3px"></td>
<td style="padding-bottom: 2px;background-color: #f9f9f9;padding-left: 3px;width: 100%;padding-right: 4px;vertical-align: top;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px"><span style="color: #008000">// </span><span style="color: #008000">直接用类名创建对象</span><br /><span style="color: #000080">$employ</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><b><span style="color: #0000ff">new</span></b><span> Employee</span><span style="color: #8000ff">(</span><span style="color: #808080"><br />
'Dick'</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #ff8000">20</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #ff8000">3000</span><span style="color: #8000ff">);</span><br /><span style="color: #008000">// </span><span style="color: #008000">用变量创建对象</span><br /><span style="color: #000080">$class_name</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><span style="color: #808080">'Employee'</span><span style="color: #8000ff">;</span><br /><span style="color: #000080">$employ</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><b><span style="color: #0000ff">new</span></b><span>&nbsp;</span><span style="color: #000080">$class_name</span><span style="color: #8000ff">(</span><span style="color: #808080">'Dick'</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #ff8000">20</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #ff8000">3000</span><span style="color: #8000ff">);</span><br /><span style="color: #008000">// </span><span style="color: #008000">访问属性</span><br /><span style="color: #000080">$name</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><span style="color: #000080">$employ</span><span style="color: #8000ff">-&gt;</span><span>name</span><span style="color: #8000ff">;</span><br /><span style="color: #008000">// </span><span style="color: #008000">调用方法</span><br /><span style="color: #000080">$added_salary</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><span style="color: #000080">$employ</span><span style="color: #8000ff">-&gt;</span><span>add_salary</span><span style="color: #8000ff">(</span><span style="color: #ff8000">1000</span><span style="color: #8000ff">);</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>3.自省<br />因为在PHP中，自省用到的地方不是很多，所以就不详细说了，如果想看详细的资料，可以看官方的说明。<br /><a href="http://www.php.net/manual/en/function.class-exists.php" target="_blank">class_exists</a>() 查看类是否存在<br /><a href="http://www.php.net/manual/en/function.get-declared-classes.php" target="_blank">get_ declared_ classes</a>() 查看已经定义的类<br /><a href="http://www.php.net/manual/en/function.get-parent-class.php" target="_blank">get_ parent_ class</a>() 取得父类<br /><a href="http://www.php.net/manual/en/function.get-class.php">get_ class</a>() 取得对象的类名<br /><a href="http://www.php.net/manual/en/function.method-exists.php" target="_blank">method_ exists</a>() 对象中是否存在某个函数<br /><a href="http://www.php.net/manual/en/function.property-exists.php" target="_blank">property_ exists</a>() 对象中是否存在某个属性<br /><a href="http://www.php.net/manual/en/function.get-class-methods.php" target="_blank">get_ class_ methods</a>() 取得类定义的函数<br /><a href="http://www.php.net/manual/en/function.get-class-vars.php" target="_blank">get_ class_ vars</a>() 取得类定义的属性<br /><a href="http://www.php.net/manual/en/function.get-object-vars.php" target="_blank">get_ object_ vars</a>() 取得对象的值的数组</p>
<p>参考资料：<br />PHP程序设计，2003，第六章 对象</p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/7df17b8546a13725.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP学习(15) 数组的遍历和排序</title>
		<link>http://yutuo.net/archives/3ab2a0d66ee036ce.html</link>
		<comments>http://yutuo.net/archives/3ab2a0d66ee036ce.html#comments</comments>
		<pubDate>Mon, 18 Apr 2011 09:58:43 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://yutuo.net/archives/3ab2a0d66ee036ce.html</guid>
		<description><![CDATA[１.简单的遍历PHP中，数组最简单的遍历方法莫过于for和foreach了。其中foreach有两种写法，一种只遍历值、另一种遍历索引和值。具体可以看如下代码。 1234567891011121314 $test01&#160;=&#160;array('a',&#160;'b',&#160;'c');// forfor&#160;($i&#160;=&#160;0;&#160;$i&#160;&#60; count($test01);&#160;$i++)&#160;{&#160;&#160;&#160; echo&#160;$test01[$i];}// foreach value onlyforeach&#160;($test01&#160;as&#160;$value)&#160;{&#160;&#160;&#160; echo&#160;$value;}// foreach key and value$test01&#160;=&#160;array('a'&#160;=&#62;&#160;'aaaa',&#160;'b'&#160;=&#62;&#160;'bbbb',&#160;'c'&#160;=&#62;&#160;'cccc');foreach&#160;($test01&#160;as&#160;$key&#160;=&#62;&#160;$value)&#160;{&#160;&#160;&#160; echo&#160;"$key =&#62; $value";} 2.迭代器遍历PHP中，迭代遍历主要要用到以下函数。current() 迭代的当前元素。reset() 重新移动到第一个元素并返回它。next() 移动到下一个元素并返回它。prev() 移动到上一个元素并返回它。end() 移动到最后一个元素并返回它。each() 以数组的形式返回当前元素的索引和值，并移动到下一个迭代。key() 返回当前的索引。array_ walk() 为每一个元素调用函数。array_ reduce() 为每一个元素依次计算。 123456789101112131415 $test01&#160;=&#160;array('a'&#160;=&#62;&#160;'aaaa',&#160;'b'&#160;=&#62;&#160;'bbbb',&#160;'c'&#160;=&#62;&#160;'cccc');while&#160;(list($key,&#160;$value)&#160;= each($test01))&#160;{&#160;&#160;&#160; echo&#160;"$key =&#62; $value"&#160;.&#160;"&#60;br/&#62;";}&#160;array_walk($test01, walk_test);function walk_test($key,&#160;$value)&#160;{&#160;&#160;&#160; echo&#160;"walk: $key =&#62; $value"&#160;.&#160;"&#60;br/&#62;";}&#160;$test02&#160;=&#160;array(1,&#160;2,&#160;3,&#160;4,&#160;5);echo array_reduce($test02, reduce_test);function reduce_test($run_result,&#160;$current_value)&#160;{&#160;&#160;&#160; return&#160;$run_result&#160;+&#160;$current_value&#160;*&#160;$current_value;} 3.数组的排序在PHP中，排序方式有三种，通过索引排序、通过值排序（不保留原索引）、通过值排序（保留原索引）。每种又分为升序、降序以及用户定义顺序三个函数。它们分别如下：通过索引排序：①升序 ksort()　②降序 krsort()　③用户定义顺序 uksort()不保留原索引值排序：①升序 sort()　②降序 rsort()　③用户定义顺序 usort()保留原索引值排序：①升序 asort()　②降序 arsort()　③用户定义顺序 uasort()在PHP中，也可以用array_multisort来一次排序多个数组，不过项目中可能用得比较少。翻转数组，把数字索引翻转，索引重新从0开始：array_reverse()把索引和值调换：array_flip()随机顺序：shuffle()因为上面的函数官方的例子都很容易懂，就没写代码了。 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>１.简单的遍历<br /></strong>PHP中，数组最简单的遍历方法莫过于for和foreach了。其中foreach有两种写法，一种只遍历值、另一种遍历索引和值。具体可以看如下代码。</p>
<div style="padding-bottom: 17px;line-height: 130%;width: 98%;overflow: auto">
<table style="border-bottom: silver 1px solid;border-left: silver 1px solid;border-collapse: collapse;border-top: silver 1px solid;border-right: silver 1px solid">
<tbody>
<tr>
<td style="text-align: right;padding-bottom: 2px;background-color: #def;padding-left: 10px;padding-right: 4px;color: gray;vertical-align: top;overflow: visible;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></code></td>
<td style="background-color: #6ce26c;padding-left: 3px"></td>
<td style="padding-bottom: 2px;background-color: #f9f9f9;padding-left: 3px;width: 100%;padding-right: 4px;vertical-align: top;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px"><span style="color: #000080">$test01</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><b><span style="color: #0000ff">array</span></b><span style="color: #8000ff">(</span><span style="color: #808080">'a'</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #808080">'b'</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #808080">'c'</span><span style="color: #8000ff">);</span><br /><span style="color: #008000">// for</span><br /><b><span style="color: #0000ff">for</span></b><span>&nbsp;</span><span style="color: #8000ff">(</span><span style="color: #000080">$i</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><span style="color: #ff8000">0</span><span style="color: #8000ff">;</span><span>&nbsp;</span><span style="color: #000080">$i</span><span>&nbsp;</span><span style="color: #8000ff">&lt;</span><span> count</span><span style="color: #8000ff">(</span><span style="color: #000080">$test01</span><span style="color: #8000ff">);</span><span>&nbsp;</span><span style="color: #000080">$i</span><span style="color: #8000ff">++)</span><span>&nbsp;</span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">echo</span></b><span>&nbsp;</span><span style="color: #000080">$test01</span><span style="color: #8000ff">[</span><span style="color: #000080">$i</span><span style="color: #8000ff">];</span><br /><span style="color: #8000ff">}</span><br /><span style="color: #008000">// foreach value only</span><br /><b><span style="color: #0000ff">foreach</span></b><span>&nbsp;</span><span style="color: #8000ff">(</span><span style="color: #000080">$test01</span><span>&nbsp;</span><b><span style="color: #0000ff">as</span></b><span>&nbsp;</span><span style="color: #000080">$value</span><span style="color: #8000ff">)</span><span>&nbsp;</span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">echo</span></b><span>&nbsp;</span><span style="color: #000080">$value</span><span style="color: #8000ff">;</span><br /><span style="color: #8000ff">}</span><br /><span style="color: #008000">// foreach key and value</span><br /><span style="color: #000080">$test01</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><b><span style="color: #0000ff">array</span></b><span style="color: #8000ff">(</span><span style="color: #808080">'a'</span><span>&nbsp;</span><span style="color: #8000ff">=&gt;</span><span>&nbsp;</span><span style="color: #808080">'aaaa'</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #808080">'b'</span><span>&nbsp;</span><span style="color: #8000ff">=&gt;</span><span>&nbsp;</span><span style="color: #808080">'bbbb'</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #808080">'c'</span><span>&nbsp;</span><span style="color: #8000ff">=&gt;</span><span>&nbsp;</span><span style="color: #808080">'cccc'</span><span style="color: #8000ff">);</span><br /><b><span style="color: #0000ff">foreach</span></b><span>&nbsp;</span><span style="color: #8000ff">(</span><span style="color: #000080">$test01</span><span>&nbsp;</span><b><span style="color: #0000ff">as</span></b><span>&nbsp;</span><span style="color: #000080">$key</span><span>&nbsp;</span><span style="color: #8000ff">=&gt;</span><span>&nbsp;</span><span style="color: #000080">$value</span><span style="color: #8000ff">)</span><span>&nbsp;</span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">echo</span></b><span>&nbsp;</span><span style="color: #808080">"</span><b><span style="color: #808080">$key</span></b><span style="color: #808080"> =&gt; </span><b><span style="color: #808080">$value</span></b><span style="color: #808080">"</span><span style="color: #8000ff">;</span><br /><span style="color: #8000ff">}</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p><strong>2.迭代器遍历<br /></strong>PHP中，迭代遍历主要要用到以下函数。<br /><a href="http://www.php.net/manual/en/function.current.php" target="_blank">current</a>() 迭代的当前元素。<br /><a href="http://www.php.net/manual/en/function.reset.php" target="_blank">reset</a>() 重新移动到第一个元素并返回它。<br /><a href="http://www.php.net/manual/en/function.next.php" target="_blank">next</a>() 移动到下一个元素并返回它。<br /><a href="http://www.php.net/manual/en/function.prev.php" target="_blank">prev</a>() 移动到上一个元素并返回它。<br /><a href="http://www.php.net/manual/en/function.end.php" target="_blank">end</a>() 移动到最后一个元素并返回它。<br /><a href="http://www.php.net/manual/en/function.each.php" target="_blank">each</a>() 以数组的形式返回当前元素的索引和值，并移动到下一个迭代。<br /><a href="http://www.php.net/manual/en/function.key.php" target="_blank">key</a>() 返回当前的索引。<br /><a href="http://www.php.net/manual/en/function.array-walk.php" target="_blank">array_ walk</a>() 为每一个元素调用函数。<br /><a href="http://www.php.net/manual/en/function.array-reduce.php" target="_blank">array_ reduce</a>() 为每一个元素依次计算。</p>
<div style="padding-bottom: 17px;line-height: 130%;width: 98%;overflow: auto">
<table style="border-bottom: silver 1px solid;border-left: silver 1px solid;border-collapse: collapse;border-top: silver 1px solid;border-right: silver 1px solid">
<tbody>
<tr>
<td style="text-align: right;padding-bottom: 2px;background-color: #def;padding-left: 10px;padding-right: 4px;color: gray;vertical-align: top;overflow: visible;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br /></code></td>
<td style="background-color: #6ce26c;padding-left: 3px"></td>
<td style="padding-bottom: 2px;background-color: #f9f9f9;padding-left: 3px;width: 100%;padding-right: 4px;vertical-align: top;padding-top: 3px"><code style="font-family: consolas, courier new, monospace;font-size: 12px"><span style="color: #000080">$test01</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><b><span style="color: #0000ff">array</span></b><span style="color: #8000ff">(</span><span style="color: #808080">'a'</span><span>&nbsp;</span><span style="color: #8000ff">=&gt;</span><span>&nbsp;</span><span style="color: #808080">'aaaa'</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #808080">'b'</span><span>&nbsp;</span><span style="color: #8000ff">=&gt;</span><span>&nbsp;</span><span style="color: #808080">'bbbb'</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #808080">'c'</span><span>&nbsp;</span><span style="color: #8000ff">=&gt;</span><span>&nbsp;</span><span style="col<br />
or: #808080">'cccc'</span><span style="color: #8000ff">);</span><br /><b><span style="color: #0000ff">while</span></b><span>&nbsp;</span><span style="color: #8000ff">(</span><b><span style="color: #0000ff">list</span></b><span style="color: #8000ff">(</span><span style="color: #000080">$key</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #000080">$value</span><span style="color: #8000ff">)</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span> each</span><span style="color: #8000ff">(</span><span style="color: #000080">$test01</span><span style="color: #8000ff">))</span><span>&nbsp;</span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">echo</span></b><span>&nbsp;</span><span style="color: #808080">"</span><b><span style="color: #808080">$key</span></b><span style="color: #808080"> =&gt; </span><b><span style="color: #808080">$value</span></b><span style="color: #808080">"</span><span>&nbsp;</span><span style="color: #8000ff">.</span><span>&nbsp;</span><span style="color: #808080">"&lt;br/&gt;"</span><span style="color: #8000ff">;</span><br /><span style="color: #8000ff">}</span><br />&nbsp;<br /><span>array_walk</span><span style="color: #8000ff">(</span><span style="color: #000080">$test01</span><span style="color: #8000ff">,</span><span> walk_test</span><span style="color: #8000ff">);</span><br /><b><span style="color: #0000ff">function</span></b><span> walk_test</span><span style="color: #8000ff">(</span><span style="color: #000080">$key</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #000080">$value</span><span style="color: #8000ff">)</span><span>&nbsp;</span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">echo</span></b><span>&nbsp;</span><span style="color: #808080">"walk: </span><b><span style="color: #808080">$key</span></b><span style="color: #808080"> =&gt; </span><b><span style="color: #808080">$value</span></b><span style="color: #808080">"</span><span>&nbsp;</span><span style="color: #8000ff">.</span><span>&nbsp;</span><span style="color: #808080">"&lt;br/&gt;"</span><span style="color: #8000ff">;</span><br /><span style="color: #8000ff">}</span><br />&nbsp;<br /><span style="color: #000080">$test02</span><span>&nbsp;</span><span style="color: #8000ff">=</span><span>&nbsp;</span><b><span style="color: #0000ff">array</span></b><span style="color: #8000ff">(</span><span style="color: #ff8000">1</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #ff8000">2</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #ff8000">3</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #ff8000">4</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #ff8000">5</span><span style="color: #8000ff">);</span><br /><b><span style="color: #0000ff">echo</span></b><span> array_reduce</span><span style="color: #8000ff">(</span><span style="color: #000080">$test02</span><span style="color: #8000ff">,</span><span> reduce_test</span><span style="color: #8000ff">);</span><br /><b><span style="color: #0000ff">function</span></b><span> reduce_test</span><span style="color: #8000ff">(</span><span style="color: #000080">$run_result</span><span style="color: #8000ff">,</span><span>&nbsp;</span><span style="color: #000080">$current_value</span><span style="color: #8000ff">)</span><span>&nbsp;</span><span style="color: #8000ff">{</span><br /><span>&nbsp;&nbsp;&nbsp; </span><b><span style="color: #0000ff">return</span></b><span>&nbsp;</span><span style="color: #000080">$run_result</span><span>&nbsp;</span><span style="color: #8000ff">+</span><span>&nbsp;</span><span style="color: #000080">$current_value</span><span>&nbsp;</span><span style="color: #8000ff">*</span><span>&nbsp;</span><span style="color: #000080">$current_value</span><span style="color: #8000ff">;</span><br /><span style="color: #8000ff">}</span><br /></code></td>
</tr>
</tbody>
</table>
</div>
<p>3.数组的排序<br />在PHP中，排序方式有三种，通过索引排序、通过值排序（不保留原索引）、通过值排序（保留原索引）。每种又分为升序、降序以及用户定义顺序三个函数。它们分别如下：<br />通过索引排序：①升序 <a href="http://www.php.net/manual/en/function.ksort.php" target="_blank">ksort</a>()　②降序 <a href="http://www.php.net/manual/en/function.krsort.php" target="_blank">krsort</a>()　③用户定义顺序 <a href="http://www.php.net/manual/en/function.uksort.php" target="_blank">uksort</a>()<br />不保留原索引值排序：①升序 <a href="http://www.php.net/manual/en/function.sort.php" target="_blank">sort</a>()　②降序 <a href="http://www.php.net/manual/en/function.rsort.php" target="_blank">rsort</a>()　③用户定义顺序 <a href="http://www.php.net/manual/en/function.usort.php" target="_blank">usort</a>()<br />保留原索引值排序：①升序 <a href="http://www.php.net/manual/en/function.asort.php" target="_blank">asort</a>()　②降序 <a href="http://www.php.net/manual/en/function.arsort.php" target="_blank">arsort</a>()　③用户定义顺序 <a href="http://www.php.net/manual/en/function.uasort.php" target="_blank">uasort</a>()<br />在PHP中，也可以用<a href="http://www.php.net/manual/en/function.array-multisort.php" target="_blank">array_multisort</a>来一次排序多个数组，不过项目中可能用得比较少。<br />翻转数组，把数字索引翻转，索引重新从0开始：<a href="http://www.php.net/manual/en/function.array-reverse.php" target="_blank">array_reverse</a>()<br />把索引和值调换：<a href="http://www.php.net/manual/en/function.array-flip.php" target="_blank">array_flip</a>()<br />随机顺序：<a href="http://www.php.net/manual/en/function.shuffle.php" target="_blank">shuffle</a>()<br />因为上面的函数官方的例子都很容易懂，就没写代码了。</p>
<p>参考资料：<br />PHP程序设计，2003，第五章 数组</p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/3ab2a0d66ee036ce.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP学习(14) 数组 值的操作</title>
		<link>http://yutuo.net/archives/5ce31ccdfe3872bb.html</link>
		<comments>http://yutuo.net/archives/5ce31ccdfe3872bb.html#comments</comments>
		<pubDate>Sun, 17 Apr 2011 06:47:51 +0000</pubDate>
		<dc:creator>yutuo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://yutuo.net/archives/5ce31ccdfe3872bb.html</guid>
		<description><![CDATA[1. 值的析取PHP中，用list来析取数组中的值，如list($a, $b) = $array。如果list中的值多于数组个数，list中多余的值会设为NULL。也可以用逗号来跳过数组中的值，如list($a, ,$b) = $array。 2.划分数组如果想取得子数组，可以用array_slice(array, offset, length);来取得。它返回一个新的下标从0开始的数组。如果原数组的下标是字符串，好像是没有什么意义的，最好不要用，可以用array_splice来取得子串。 3.将数组分为多个数组用array_chunk可以把数组分成一个二维数组。详细的可以通过链接看官方的说明。 4.键和值array_keys($array)，取得由数组索引组成的数组array_value($array)，取得由数组值组成的数组，索引从0开始重新分配。array_key_exists($key, array)，元素是否存在检查。array_splice, 删除插入元素。 5.数组和变量之间的转换extract(array) 把数组变成变量compact() 把变量变成数组 6.数组的查找in_array(array, ) 返回元素是否在数组中存在。array_search() 返回被找到元素的索引。 7.整个数组函数array_ sum() 计算数组的和。array_ merge() 合并两个数组。array_ diff() 两个数组之间的不同值。array_ filter() 过滤元素 8.集合、堆栈、队列array_ unique() 取两个数组的合集，如果值相同，保留前一个数组的索引。array_ intersect() 取两个数级的交集，保留第一个数组的索引。array_ push() 加入堆栈。array_ pop() 弹出堆栈。array_ shift() 加入队列。array_ unshift() 弹出队列。 参考资料：PHP程序设计，2003，第五章 数组]]></description>
			<content:encoded><![CDATA[<p><strong>1. 值的析取<br /></strong>PHP中，用list来析取数组中的值，如<a href="http://php.net/manual/en/function.list.php" target="_blank">list</a>($a, $b) = $array。如果list中的值多于数组个数，list中多余的值会设为NULL。也可以用逗号来跳过数组中的值，如list($a, ,$b) = $array。</p>
<p><strong>2.划分数组</strong><br />如果想取得子数组，可以用<a href="http://php.net/manual/en/function.array-slice.php" target="_blank">array_slice</a>(array, offset, length);来取得。它返回一个新的下标从0开始的数组。如果原数组的下标是字符串，好像是没有什么意义的，最好不要用，可以用<a href="http://www.php.net/manual/en/function.array-splice.php" target="_blank">array_splice</a>来取得子串。</p>
<p><strong>3.将数组分为多个数组</strong><br />用<a href="http://www.php.net/manual/en/function.array-chunk.php" target="_blank">array_chunk</a>可以把数组分成一个二维数组。详细的可以通过链接看官方的说明。</p>
<p><strong>4.键和值</strong><br /><a href="http://www.php.net/manual/en/function.array-keys.php" target="_blank">array_keys</a>($array)，取得由数组索引组成的数组<br /><a href="http://www.php.net/manual/en/function.array-values.php" target="_blank">array_value</a>($array)，取得由数组值组成的数组，索引从0开始重新分配。<br /><a href="http://www.php.net/manual/en/function.array-key-exists.php" target="_blank">array_key_exists</a>($key, array)，元素是否存在检查。<br /><a href="http://www.php.net/manual/en/function.array-splice.php" target="_blank">array_splice</a>, 删除插入元素。</p>
<p><strong>5.数组和变量之间的转换</strong><br /><a href="http://www.php.net/manual/en/function.extract.php" target="_blank">extract</a>(array) 把数组变成变量<br /><a href="http://www.php.net/manual/en/function.compact.php" target="_blank">compact</a>() 把变量变成数组</p>
<p><strong>6.数组的查找</strong><br /><a href="http://php.net/manual/en/function.in-array.php" target="_blank">in_array</a>(array, ) 返回元素是否在数组中存在。<br /><a href="http://www.php.net/manual/en/function.array-search.php" target="_blank">array_search</a>() 返回被找到元素的索引。</p>
<p><strong>7.整个数组函数</strong><br /><a href="http://www.php.net/manual/en/function.array-sum.php" target="_blank">array_ sum</a>() 计算数组的和。<br /><a href="http://www.php.net/manual/en/function.array-merge.php" target="_blank">array_ merge</a>() 合并两个数组。<br /><a href="http://www.php.net/manual/en/function.array-diff.php" target="_blank">array_ diff</a>() 两个数组之间的不同值。<br /><a href="http://www.php.net/manual/en/function.array-filter.php" target="_blank">array_ filter</a>() 过滤元素</p>
<p><strong>8.集合、堆栈、队列</strong><br /><a href="http://www.php.net/manual/en/function.array-unique.php" target="_blank">array_ unique</a>() 取两个数组的合集，如果值相同，保留前一个数组的索引。<br /><a href="http://www.php.net/manual/en/function.array-intersect.php" target="_blank">array_ intersect</a>() 取两个数级的交集，保留第一个数组的索引。<br /><a href="http://www.php.net/manual/en/function.array-push.php" target="_blank">array_ push</a>() 加入堆栈。<br /><a href="http://www.php.net/manual/en/function.array-pop.php" target="_blank">array_ pop</a>() 弹出堆栈。<br /><a href="http://www.php.net/manual/en/function.array-shift.php" target="_blank">array_ shift</a>() 加入队列。<br /><a href="http://www.php.net/manual/en/function.array-unshift.php" target="_blank">array_ unshift</a>() 弹出队列。</p>
<p>参考资料：<br />PHP程序设计，2003，第五章 数组</p>
]]></content:encoded>
			<wfw:commentRss>http://yutuo.net/archives/5ce31ccdfe3872bb.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

