2 beckham467 beckham467 于 2015.07.15 13:07 提问

PHP全局变量的问题global

代码链接:http://www.mcqyy.com/RunCode/php/#id/29b4699b9f37cc352dcf1e39c7491e86
代码:

 <?php
$arr = array();
main();
array_push($arr,'2');
arrSearch($arr,'2');
arrSearch($arr,'1');


function main(){
    global $arr;
    array_push($arr,'1');
    arrSearch($arr,'1');
}

function arrSearch($arr,$el){
    echo "<hr>";
    echo "arr:";
    print_r($arr);
    echo "<br/>";
    echo $el.":";
    if(array_search($el,$arr)){
        echo 'yes';
    }else{
        echo 'no';
    }
}

?>

结果是:
arr:Array ( [0] => 1 )
1:no
arr:Array ( [0] => 1 [1] => 2 )
2:yes
arr:Array ( [0] => 1 [1] => 2 )
1:no

ps:刚学php,还请大家指教。

2个回答

save4me
save4me   Ds   Rxr 2015.07.15 13:38
已采纳

你的问题在于对array_search的理解不正确,如果查询存在,它返回的是序号,而不是true或false。因为你查询的刚好是第一位的,所以返回0, 转换成布尔值的时候,就变成false了。如果需要判断值在不在数组中,使用in_array() - 检查数组中是否存在某个值,如果需要判断key,使用array_key_exists() - 检查给定的键名或索引是否存在于数组中
参考array_search

array_search — 在数组中搜索给定的值,如果成功则返回相应的键名

关于global,参考变量范围

在函数中声明了全局变量 $a 和 $b 之后,对任一变量的所有引用都会指向其全局版本。对于一个函数能够声明的全局变量的最大个数,PHP 没有限制。

beckham467
beckham467   2015.07.15 15:21

谢谢!我太粗心了 回答的太仔细了~

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
php 全局变量global的使用方法
全局变量和“global”关键字 PHP默认定义了一些“超级全局(Superglobals)”变量,这些变量自动全局化,而且能够在 程序的任何地方中调用,比如$_GET和$ _REQUEST等等。它们通常都来自数据或者其他外部数 据,使用这些变量通常是不会产生问题的,因为他们基本上是不可写的。 但是你可以使用你自己的全局变量。使用关键字“global”你就可以把全局数据导入到一
PHP 全局变量global与$GLOBAL大详解
1、如果想在PHP中使用全局变量,可参考下图: ---需要在外部用global声明,同时在函数内部进行声明,否则在函数内部会当局部变量。 2、在外部不用global则外部的就是不是全局变量,无法在函数内部使用: ----内部用了关键字global,在内部或外部$global['var1']、$global['var2]均为全局变量; 3、注释函数内部的g
【php】global的使用与php的全局变量
php的全局变量和其余编程语言是不同的,在大多数的编程语言中,全局变量在其下的函数、类中自动生效,除非被局部变量覆盖,或者根本就不允许再声明相同名称与类型的局部变量,但是php中的全局变量不是默认生效的。php中全局变量在函数中使用时必须申明为全局,Global这个关键字在函数中定义才有用。也就是说Global的作用是定义全局变量,但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括inc
PHP 全局变量 与 SESSION 漏洞(global 与 session)
先看这一段简单的代码 session_start();$_SESSION['isadmin']='yes';$isadmin='no';echo $_SESSION['isadmin'];?> 当php.ini里配置 register_globals = Off 时,
PHP全局变量与SESSION 漏洞(global 与 session)
PHP全局变量与SESSION 漏洞(global 与 session) http://www.2cto.com/Article/201207/143312.html 2012-07-25 09:46:56     我来说两句       收藏    我要投稿 先看这一段简单的代码 session_start();$_SESSION['isadmin']='y
[PHP]全局变量:global与$GLOBALS的区别和使用
1.有些场合需要全局变量的出现,如下例子: <?php $name="why";//定义变量name,并初始化 function echoName() { //试图引用函数外面的变量 echo "myname is ".$name.""; } echoName(); ?> 上面的代码
php全局变量漏洞 $GLOBALS
php全局变量漏洞 $GLOBALS 2013-07-27 10:51:08 http://blog.chinaunix.net/uid-29068482-id-3821859.html 分类: Web开发 在Discuz代码中有这么一段: if (isset($_REQUEST['GLOBALS']) OR isset($_FILES['GLOBALS
smarty 全局变量
背景:最近由于项目需要,进行转到PHP开发,且第一次使用Zend Framework1.11.11+Smarty3.1.7进行开发,发现在php里面都有Global变量(就是只要定义了该变量,那么在PHP的任何代码都能调用该Global变量),就是想知道Smarty里面有没有这个变量。经过查阅大量资料从而满意的答案 smarty变量的运用:我们都知道smarty是一种经常与php联合起来运用的一
$GLOBALS与global区别 & 变量销毁机制
代码一:<?php $var1 = 1; function test1(){ global $var1; #等价于 $var1 = &$GLOBALS['var1']; 这里的$var1跟外面的$var1是不同的指针,但指向同样的数据 unset($var1); #当你unset一个引用,只是断开了变量名和变量内容之间的绑定,这并不意味着变量内容被销毁了. echo $
PHP中global关键字和$GLOBALS用法
$a  =  1 ;  /* global scope */ function  Test () {     echo  $a ;  /* reference to local scope variable */ } Test (); ?> 这个脚本不会有任何输出,因为 echo 语句引用了一个局部版本的变量 $a ,而且在这个范围内,它并没有被赋值。你可