您的位置:首页 > 编程语言 > PHP开发

PHP学习笔记--有关php中的变量

2013-05-23 15:07 281 查看
PHP中的可变变量(更多请自行参考php手册):

  php中的可变变量说白了,就是拿一个变量的值解析成一个变量名,去读那个变量名的值。实例:

  

<?php
$a = "China";  //变量a
$b = "a";       //变量b
$China = "I'm Chinese !"; //变量China
$f = "b";  //变量f

echo $a."<br />";  //输出 China
echo $$a."<br />"; //输出 I'm Chinese  --这里像要当做可变变量解析,必须在前面多加一个$符号
$a = "f";  //改变变量指向的名称(这里就是可变变量的应用)
echo $$a."<br />"; //经过上面指向变量f后输出 b
$a = "b"; //同上
echo $$a."<br /><br />"; //输出 a

echo $b."<br />"; //输出 a
echo $$b."<br />"; //输出 b
echo $$$b."<br /><br />"; //输出 a

echo $f."<br />"; //输出 b
echo $$f."<br />"; //输出 a
echo $$$f."<br />"; //输出 b
echo $$$$f."<br /><br />"; //输出 a

$$a = "China"; //前面最后一个已经更改了变量为b所谓$$a=$b 也就是改变的$b的值
echo $b."<br />"; //输出 China
echo $$b; //输出 I'm Chinese
?>


注意:可变变量不能应用于$this和超全局变量 (php变量的作用域和其他高级编程语言有所不同。看代码)

<?php
$name = 'man';
$$name = 'abc'; //如果事先没有man这个变量。就新建一个man变量。 然后把abc赋值过去
$$$name = 'def';
echo $man."<br />"; //输出abc
echo $abc; //输出def

echo "<br /> <hr />";
function show()
{
global $name; //这里的global并不是设置为全局变量。而是引用
echo $name."<br />";  //输出man
}

function showtwo()
{
//global $name;
//echo $name."<br />";
echo $GLOBALS['name']; //超全局变量数组
}

show();
showtwo();
?>


变量函数:

<?php
function b()
{
echo "这是B";
}
function c($name = "China") //设默认值
{
echo "这是$name";
}

$a = 'b';
$a(); //找值所在的函数
$a = 'c';
$a();
?>


可变变量的一个典型应用:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>

<div>
<form action="#" method="post">
<label>name: </label>
<input type="text" name="name" /><br />
<label>pwd : </label>
<input type="text" name="pwd" /><br />
<label>tag : </label>
<input type="text" name="tag" /><br />
<input type="submit" value="提交" />
</form>
</div>
<?php

foreach($_POST as $key=>$value)
{
//print_r($_POST);
$$key = $value;
}
//extract($_POST); //从数组中将变量导入到当前的符号表 --自行查找php手册
echo $name."<br />";
echo $pwd."<br />";
echo $tag."<br />";
?>
</body>
</html>


  补充:

  变量的特性。如果一个变量事先没有声明,那么如果你要对一个变量赋值,此时PHP在后台的一个操作就是,当你给这个未声明的变量进行赋值时,后台就已经帮你申明了这个变量了。 直接看例子:

<?php
class A
{
public function show()
{
//记住这里的name 实现是没有声明的。
echo (isset($this->name)?"true":"false")." -- ";
echo $this->name;
}
}

$A = new A(); //实例化
//直接输出,是没有任何结果的. 因为没有这个变量 。。这里可以用isset判断为false
$A->show();  //输出 "fase -- "

//这里进行赋值,在赋值时,后台默认声明此变量
$A->name = "我有输出了。这个变量被声明了!";
echo "<br />";
$A->show(); //输出 "true -- 我有输出了。这个变量被声明了!"
?>


小结:看了上面的示例后,你们以后再看到别人封装的代码里,如果有那种没有声明变量就直接用的,不要感到奇怪。那是叫你自己去设置呢。你直接赋值用就行了。。。(PS: 其实本人一开始也感到迷糊,因为以前在搞.NET的在C#里是绝对不会允许这种情况发生的。强型语言用惯了。。。在看这种弱类型的语言,确实一开始不会很适应)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: