David_ShiWangwang 2015-07-15 05:07 采纳率: 100%
浏览 1623
已采纳

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 2015-07-15 05:38
    关注

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

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

    关于global,参考变量范围

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 求图像处理的matlab方案
  • ¥50 winform中使用edge的Kiosk模式
  • ¥15 关于#python#的问题:功能监听网页
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信