php基础语法知识笔记(一)
共享一份我自己学习php基础语法知识的笔记,这是第一弹,明天共享第二弹。
1.判断php短标记<??>是否适用,查看php配置文件php.ini中的"short_open_tag = On"
2.官方的标记<?php?> , <script language="php"></script>
3.单行注释 //或者#
/*
多行注释
*/
4.变量 $str 字母数字下划线 ,数字不能作为开头,大小写敏感,尽量用有意义的英文。
5.注销变量函数 unset($str) 检查变量是否被定义 isset($str)
6.可变变量
$a = 'ok';
$ok = 123;
echo $$a; //可变变量 输出123
7. 连接符.
$str = 'world';
echo 'hello'.$str;
8.转义字符 \
$str="a'b\"c";
9.数组
$arr = array(34,6,9=>7,'abc','name'=>'付潭');
print_r( $arr ); //print_r() 用于输出数组,而不是用echo
输出结果:
Array ( [0] => 34 [1] => 6 [9] => 7 [10] => abc [name] => 付潭 )
10.数字
$str = 1;
echo 'asd'+1; // 1
echo '1'+1; //2
11.单引号 与 双引号的区别
$str = '你好';
echo '$str'; //$str
echo '<br />';
echo "$str"; //你好 双引号 可以解析变量以及特殊字符"\n","\t"等等
$str1 = '你好\n是我';
$str2 = "你好\n是我"; // "\n" 属于特殊字符(换行),因此双引号可以解析
$str3 = "你好\t是我";
echo $str1;
echo $str2;
echo $str3;
字符串中没有变量的时候 ,尽量使用单引号。
有变量的时候使用双引号。
$s = 'nihao';
echo $s.'某某';
echo "{$s} 某某";
"贪婪模式" 解析变量直到不符合命名规则的字符
\ 转义字符 将变量转成普通的字符串
$ok = '你好';
echo "$okk"; //输出为空,贪婪模式
echo "{$ok}k"; //输出“你好k”
echo "$ok k"; //输出“你好 k”
echo "\$ok k"; //输出“$ok k”,转义字符
echo "$ok'k"; //输出“你好'k”
echo $ok."k"; //输出“你好k”
变量可以包含中文
12.自定义字符串
echo '<img src="images/tupian.jpg" width=\'200\' />';
$str = "tupian.jpg";
echo '<img src="images/'.$str.'" width=\'200\' />'
//自定义字符串,标准格式
echo <<< ABC
<img src="images/$str" width='200' /> //中间当做 HTML区域 ,变量可以直接写
ABC;
第一行要顶格写
第一行要独占一行,后面不能跟任何东西(包括注释和空格)
最好一行也要顶格和独占一行
13.错误输出
error_reporting(E_ALL | ERROR | PARSE | WARNING | NOTICE );
//在网页中加入报错程序代码
14.常量与变量
a.常量一般用大写,变量一般用小写。
b.常量一般不加$,而变量一定要加$。
c.常量在函数内部直接就有效,不需要声明为全局变量。
同一个常量不能声明两次
15.变量的作用域
函数内部与外部没有联系。
$str = 12;
function test()
{
//声明全局变量,必须写在函数内部,外面是没有用的,而且是一次性有效。
global $str;
echo $str;
$str = 11;
}
test(); //12
function test2()
{
echo $str;
}
echo $str; //11
test2(); //不输出
声明静态变量
function test()
{
static $a=0; //声明为 静态变量 ,只在函数中运行一次,局部变量,只在函数内部有效
echo $a;
$a++;
}
test(); //0
test(); //1
test(); //2
echo $a; //输出空
16.连接符.
echo '12' , $str , '23'; //在echo中 ,","要比"."更有效率,echo是唯一可以用逗号当做连接符的
17.输出
$a = array(2,57,8,9);
echo $a; //Array,可以同时输出多个字符串
print $a; //Array,只能输出一个字符串
print_r($a); //Array ( [0] => 2 [1] => 57 [2] => 8 [3] => 9 )
18.引用
@ include('../inc/header.php'); //继续运行,警告,@号不提示报错,
require('header.php'); //终止程序,报错
header.php直接复制需要引用的代码,文件中不需要再写头部声明文件等。
被引用的文件作用域相通,可以直接引用里面声明的变量。
19.变量可以定义两次(后者覆盖前者),而函数不能。
要注意引用的文件include('yinyong.php')/require('yinyong.php');不能与现有的函数有相同的。
php5中,两个引用语句如果引用相同文件,会默认为一个。但是为保证兼容,不能写重复。
20.include_once('header.php');/require_once('footer.php');只包含一次,会自动判断有没有引用相同的文件。但影响执行效率。
21.__FILE__,内置常量
echo __FILE__; //输出文件的物理地址,F:\php\www\php_basic.php 只认代码写入的页面,不管是否被引用。
echo dirname(__FILE__); //输出文件目录,不包括文件名,F:\php\www
include( dirname(__FILE__).'/../php_basic.php'); // 利用dirname()输出文件地址,'/../php_basic.php'则代表当前目录的上一级目录中的php_basic.php文件。这是用的是正斜杠“/”,而不是因为地址栏上显示的反斜杠“\”,因为只有windows可以识别,正斜杠可以兼容windows和linux系统。
如果文件被其他文件引用,include和require语句就必须写成这种形式。
“../”适合于简单的一个文件包含于另一个文件。
而dirname(__FILE__) 大多适合多层,更复杂多多文件包含,维护起来更容易。
如果仅仅是a.php文件包含b.php文件,可以直接用 include的dirname(__FILE__)或者 “../” 均可,一般不会出错的。
但往往是 a包含了 b文件,另外c.php包含了a文件
那么使用 “../” 的话,就会造成c包含a时再载入b文件时路径出错,而使用dirname(__FILE__)时,c包含a时会以dirname(__FILE__)映射出c和a的路径关系,a再到包含b文件时,使用dirname(__FILE__),会映射出a和b的相应目录关系。这个就不会造成不同目录多次包含时路径出错!
注意: __FILE__,代表 这个代码所在文件的文件名, 比如 c用dirname(__FILE__)包含a(此时就是c引用a时使用的是绝对路径),那么 __FILE__代码是c文件的绝对路径名,而c包含a后,a再用dirname(__FILE__)包含b时,那么__FILE__在执行时就是a文件的绝对路径名,这个依次类推,当c在调用时,通过绝对路径找到a文件,a 文件又通过绝对路径找到b。这样的包含及路径永远也不会出错!
如果只是使用“../” 的话,c在调用时通过相对路径找到a,这里没有错,但是此时a里面包含b的也是使用“../”,此时是相对于c 的相对路径查找b,当然是错的!