小白求助

WBOY
WBOYOriginal
2016-06-23 14:22:28919browse

目前在自学php,今天遇到一个小问题
$a = 10
function add(){
    $a = $a * 10;
}
   add();
 echo $a;
这个$a是多少啊,我觉得应该是10,可是执行过程是个什么道理,我看不懂,就只有这个代码片段
我是小白,希望有人能帮助我。


回复讨论(解决方案)

你执行一下不就知道了

变量域的问题

这个、、、、、、、、、、、、、、、、、

函数里的变量是本地变量。另外,函数里的$a没有初始化。

$a=10;...但会报错,函数add中的$a未定义。。。执行过程是这样的,遇到函数先跳过,然后执行add(),进函数后$a未定义报错,然后执行echo $a 值为10(外面的$a的值),。。。

php中不是可以不用定义数据类型,直接使用么?$a = 10;在全局里面已经定义了,在方法里面不能用么?

本帖最后由 PhpNewnew 于 2013-09-24 10:33:57 编辑

php中不是可以不用定义数据类型,直接使用么?$a = 10;在全局里面已经定义了,在方法里面不能用么?

学习一下作用域的问题. 变量在函数外定义 那么在函数内是不能直接引用的 要么传递 要么在函数内声明

$a = 10;
function add($a)
{
    return $a * 10;
}

$a = add($a);
echo $a;
//=================

$a = 10;
function add(){
global $a;
    $a = $a * 10;
}
   add();
 echo $a;

php中不是可以不用定义数据类型,直接使用么?$a = 10;在全局里面已经定义了,在方法里面不能用么? 不能的。。就算你传参数$a进去,外面的echo $a还是10,因为不是引用传值
$a = 10;
function add($a){
$a = $a * 10;
}
add($a);
echo $a;//还为10,虽然传值了,但改变的只是函数里面的$a,不能改变函数外的$a
//=====================
如果是这样就可以(引用传参)
$a = 10;
function add(&$a){
$a = $a * 10;
}
add($a);
echo $a;//为100

楼主需要多多努力哦

受教了,谢谢各位的参与,程序猿是最可爱的人

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn