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条)

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 虚心请教几个问题,小生先有礼了
  • ¥30 截图中的mathematics程序转换成matlab