1.php 不支持全局变量,在主脚本中声明的变量(不在函数中)不是全局变量,不能在函数中使用它们;
$a = "A";
fun_001();
function fun_001(){
echo $a; //报错: Undefined variable: a
echo $GLOBALS["a"];// 打印A
}
2.
$A ="Today";
$B ="Monday";
$C ="Tudeday";
function print_A($A,$B){
//global $C;
echo $C;
echo "<br>";
$B = $A." is ".$B;
echo $B;
}
print_A($A,$B);print("<br>");
echo $B; //b输出 Monday
function print_A1($A,&$B){
//global $C;
echo $C;
echo "<br>";
$B = $A." is ".$B;
echo $B;
}
print_A1($A,$B);print("<br>");
echo "b=".$B; //由于参数$B前+了&,所以形参B的值发生了改变
3.PHP基础:
<?php
###php无全局变量
$a = "A";
fun_001();
function fun_001(){
//echo $a; //Undefined variable: a
echo $GLOBALS["a"]."<br>";
}
###变量的间接引用
$name = "John";
$$name = "a person"."<br>"; //$$name 即为 $John
echo($John);
###变量管理 【是否存在及注销变量】isset(NULL)返回false
//isset() return true/false
if(isset($first_name)){
print '$first name is set';
}
//判断一个数组的元素:
$arr = array("offset"=>"123","onset"=>"456");
if(isset($arr["offeset"])){
echo "$arr offeset is set";
}
//判断一个对象的属性:
if(isset($obj->propertity)){
}
//unset() return true/false
unset($a);
if(isset($a)){
//$a已被取消定义,所以isset($a)返回false
print '$a is set';
}
//empty() return true/false
$a = "aa";
print "$a is good<br>";
$a = null;
if(empty($a)){
print '$a is empty<br>';
}
###双引号 变量或表达式可以直接嵌入引用(变量替换)
$a = "AAA";
echo "$a".'<br>';//"."点操作符连接N个字符串
###转义符
echo "\70<br>";
echo "\0x32";
###定界符:
###结尾的一行(如上例的Eof;),一定要另起一行,并且改行除了Eof;这个定界符结尾标识
###之外不能有任何其他字符,前后都不能有,包括空格 可省略";"
###可以直接写html标签输入页面内容<table>...</table>
echo <<<MY_FLAG
PHP stands for "PHP:HYpertext Preprocessor".
The action "Php" is therebefore, usually referred to as a recursive ...
MY_FLAG;
###访问字符串中的字符(使用偏移量访问字符串)PHP4中使用$str["偏移量"]访问,PHP5也支持
$str_1 = "A";
echo "str_1{1}=".$str_1{0}."<br>";
//echo "str_1{1}=".$str_1{1}."<br>"; //打印索引位1会报错,索引不存在
$str_1{2} = "D"; //直接修改索引位2不会报错
$str_1{1} = "N"; //直接修改索引位1不会报错
echo $str_1; //输出AND
###数组
array(1, 2, 3); //省略key等价于下面的这条
array(0 => 1, 1 => 2 , 2 => 3);
array(1 => 1, 2, 3);//等价于 array(1 => 1, 2 => 2, 3 => 3); 指定了key 从1开始
array(array("name" => "Jhon", "age" => 26), array("name" => "Jeff", "age" => 30));//嵌套数组,2条person记录
$arr_2 = array(1,2,3);
$arr_2[0] = 2;
print_r($arr_2);//打印数组的系统方法# 输出 Array ( [0] => 2 [1] => 2 [2] => 3 )
echo "<br>";
$arr_3[] = 1;
$arr_3[] = 2;
$arr_3[] = 3;
print_r($arr_3);//打印Array ( [0] => 1 [1] => 2 [2] => 3 )
echo "<br>";
$arr_3["name"] = "JOHN";
print_r($arr_3);//Array ( [0] => 1 [1] => 2 [2] => 3 [name] => JOHN )
echo "----------------<br>";
//使用foreach 遍历数组
foreach($arr_3 as $key => $value){
print "#$key = $value\n";
}
//$key可选的 ,如果用不到key显示的话,上面的foreach可以写成下面这样:
echo "----------------<br>";
foreach($arr_3 as $value){
echo $value."\t";
}
###常量
define("MY_OK", 0);//常量声明的公认的代码标准是全大写表示
###变量的别名 为一个变量指定一个别名后,改变别名的值该变量的值也会发生变化
$bb = "BBB";
$b = & $bb;
echo $bb."<BR>"; // print BBB
$b = "BBBBB";
echo $bb."<BR>";// print BBBBB
###运算符
// ===
echo "---------------";
print (1 === "1");
$val_2="Z";
echo ++$val_2;
###错误抑制运算符 @
###三元运算符
$val_3 = 1==1?0:1;
echo "<br>".$val_3;
###for循环注意事项,php不会帮你优化并缓存循环变量
for($i = 0; $i<count($arr_2); $i++){} //每次都会执行cout()操作,应该优化为:
$count = count($arr_2);
for($i = 0; $i<$count; $i++){}
###include "file_name"; 被包含进来的页面中的变量也可以使用了
###值传递
$x = 1;
$y = 2;
function square($x, $y){
$x = 3;
$y = 4;
}
square($x, $y);
echo $x."\n";
echo$y."\n";
###引用传递
function square1(&$x, &$y){
$x = 3;
$y = 4;
}
square1(&$x, &$y);
echo $x."\n";
echo$y."\n";
?>
4.PHP与HTML的嵌套
<?php
if(date('md')=='0526'){
$greeting = "Good Day!";
}else{
$greeting = "Good morning!";
}
?>
<html>
<head>
<title>PHP与HTML的嵌套测试</title>
</head>
<body>
<?php echo $greeting;?>
</body>
</html>
body中的代码等价于<?= $greeting;?>,服务器必须支持<?...?>的短标记形式.尽量不要使用段标记short open tag
5. != 和 !==
// 处理表单数据
public function insert() {
$Form = D("Form");
if($Form->create()) {
if(false !==$Form->add()) {
$this->success('数据添加成功!');
}else{
$this->error('数据写入错误');
}
}else{
header("Content-Type:text/html; charset=utf-8");
exit($Form->getError().' [ <A HREF="javascript:history.back()">返 回</A> ]');
}
}
手册中关于!=和!==的说明
$a !== $b | 非全等 | TRUE,如果 $a 不等于 $b,或者它们的类型不同。(PHP 4 引进) |
$a != $b | 不等 | TRUE,如果 $a 不等于 $b。 |
上例中Model的Add方法返回的是影响记录ID值,如果返回为false则为错误,0为失败。由于PHP是弱类型语言。所以这里使用恒等的判断方法(恒等,及变量的数据类型、长度、值必须相等)
6.常用函数收录(不断整理中):
(1)dump此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值,可以打印数组、对象等等。