array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 PHP高级教程(一) - 爱码网
Rain99-

多维数组

多维数组指的是包含一个或多个数组的数组。
PHP 能理解两、三、四或五级甚至更多级的多维数组。
数组的维度指示您需要选择元素的索引数。

  • 对于二维数组,您需要两个索引来选取元素
  • 对于三维数组,您需要三个索引来选取元素
$cars = array
  (
  array("Volvo",22,18),
  array("BMW",15,13),
  array("Saab",5,2),
  array("Land Rover",17,15)
  );

可以在 For 循环中使用另一个 For 循环,来获得 $cars 数组中的元素(我们仍需使用两个索引):

<?php
for ($row = 0; $row < 4; $row++) {
  echo "<p><b>Row number $row</b></p>";
  echo "<ul>";
  for ($col = 0; $col < 3; $col++) {
    echo "<li>".$cars[$row][$col]."</li>";
  }
  echo "</ul>";
}
?>

日期和时间

  1. Date() 函数
    Date() 函数把时间戳格式化为更易读的日期和时间。
    时间戳是一种字符序列,它表示具体事件发生的日期和事件。
    date(format,timestamp)

    date() 函数会返回服务器的当前日期/时间!

a. 获得简单的日期
date() 函数的格式参数是必需的,它们规定如何格式化日期或时间。
下面列出了一些常用于日期的字符:

  • d - 表示月里的某天(01-31)
  • m - 表示月(01-12)
  • Y - 表示年(四位数)
  • 1 - 表示周里的某天
    其他字符,比如 "/", "." 或 "-" 也可被插入字符中,以增加其他格式。

b. 自动版权年份
网站下面的那个
© 2010-<?php echo date("Y")?>
c. 获得简单的时间
下面是常用于时间的字符:

  • h - 带有首位零的 12 小时小时格式
  • i - 带有首位零的分钟
  • s - 带有首位零的秒(00 -59)
  • a - 小写的午前和午后(am 或 pm)
    下面的例子以指定的格式输出当前时间:

  1. mktime() 返回日期的 Unix 时间戳
    mktime() 函数返回日期的 Unix 时间戳。Unix 时间戳包含 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)与指定时间之间的秒数。
    mktime(hour,minute,second,month,day,year)

  2. strtotime() 把字符串转换为 Unix 时间戳

Include 文件包含

服务器端包含 (SSI) 用于创建可在多个页面重复使用的函数、页眉、页脚或元素。
include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。
包含文件很有用,如果您需要在网站的多张页面上引用相同的 PHP、HTML 或文本的话。
include 和 require 语句
通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。
include 和 require 语句是相同的,除了错误处理方面:

  • require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
  • include 只生成警告(E_WARNING),并且脚本会继续
    include \'filename\';
    require \'filename\';

include 实例
假设我们有一个名为 "footer.php" 的标准的页脚文件,就像这样:

如需在一张页面中引用这个页脚文件,请使用 include 语句:

请在此时使用 require:当文件被应用程序请求时。
请在此时使用 include:当文件不是必需的,且应用程序在文件未找到时应该继续运行时。

文件处理

PHP 拥有的多种函数可供创建、读取、上传以及编辑文件。

文件读取/打开

  1. readfile() 读取文件
    readfile() 函数读取文件,并把它写入输出缓冲。
    如果您想做的所有事情就是打开一个文件并读取器内容,那么 readfile() 函数很有用。
    假设我们有一个名为 "webdictionary.txt" 的文本文件,存放在服务器上,就像这样:

读取此文件并写到输出流的 PHP 代码如下(如读取成功则 readfile() 函数返回字节数):

  1. fopen() 打开文件
    fopen() 的第一个参数包含被打开的文件名,第二个参数规定打开文件的模式。
    fopen("webdictionary.txt", "r")

模式

  1. fread() 读取文件
    fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。
    fread($myfile,filesize("webdictionary.txt"));

  2. fclose() 关闭文件
    fclose() 函数用于关闭打开的文件。
    将用完的文件关闭可以减少不必要的服务器资源占用
    fclose($myfile);

  3. fgets() 读取单行文件
    fgets() 函数用于从文件读取单行。
    下例输出 "webdictionary.txt" 文件的首行:

    调用 fgets() 函数之后,文件指针会移动到下一行。所以,你可以通过for循环输出文件的一行行内容。

  4. feof() 检查 End-Of-File文件尾
    feof() 函数检查是否已到达 "end-of-file" (EOF)。
    feof() 对于遍历未知长度的数据很有用。
    下例逐行读取 "webdictionary.txt" 文件,直到 end-of-file:

  5. fgetc() 读取单字符
    fgetc() 函数用于从文件中读取单个字符。
    和fgets()一样,调用后文件指针会移动到下一个字符。
    下例逐字符读取 "webdictionary.txt" 文件,直到 end-of-file:

文件创建/写入

  1. fopen() 创建文件
    在 PHP 中,创建文件所用的函数与打开文件的相同。
    如果用 fopen() 打开并不存在的文件,此函数会创建文件,假定文件被打开为写入(w)或增加(a)。
    下面的例子创建名为 "testfile.txt" 的新文件。此文件将被创建于 PHP 代码所在的相同目录中:
    $myfile = fopen("testfile.txt", "w")
    如果运行这段代码时发生错误,请检查是否有向硬盘写入信息的 PHP 文件访问权限。
  2. fwrite() 写入文件
    fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。
    fwrite($myfile, $txt);
    如果一个PHP文件中对同一个文件调用两次写入函数,那第二次写入内容加在第一次后面
    而,如果执行PHP文件前,待写入文件已有内容,那么会被覆盖

文件上传

一个文件上传表单

  • enctype
    <form> 标签的 enctype 属性规定了在提交表单时,数据如何编码。
    默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。

  • type="file"
    <input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

  1. 创建上传脚本

    $_FILES,第一个参数是上传表单中<input> 标签的name值,第二个下标可以是 "name", "type", "size", "tmp_name" 或 "error"。就像这样:

  2. 上传限制
    增加对文件上传的限制。用户只能上传 .gif 或 .jpeg 文件,文件大小必须小于 20 kb:

  3. 保存被上传的文件
    上面的例子在服务器的 PHP 临时文件夹tmp创建了一个被上传文件的临时副本。
    这个临时的复制文件会在脚本执行结束时消失。要保存被上传的文件,我们需要把它拷贝到另外的位置:

上面的脚本检测了是否已存在此文件,如果不存在,则把文件拷贝到指定的文件夹。

分类:

技术点:

相关文章: