zoukankan      html  css  js  c++  java
  • PHP笔试题(11道题)详解

    题目一

    <?php
    echo -10%3;
    ?>
    答案:-1。
    考查:优先级。
    因为-的优先级比%求余的优先级低,
    也就是-(10%3)。

     

     

    2

    题目二:

    print (int)pow(2,32);
    答案:0

    3

    题目三:

    //file1.php
    <?php
    $a = '123';
    ?>
    //file2.php
    <?php
    echo include('file1.php');
    ?>
    答案:1.
    考查:返回值。
    因include()也是一个函数,有返回值。
    在成功时返回1,失败时返回错误信息。
    如果被包含的文件有return,则inculde()
    成功时返回该文件的返回值。

    4

    题目四:

    <?php
    $count = 5;
    function get_count() {
        static $count = 0;
        return $count++;
    }
    ++$count;
    get_count();
    echo get_count();
    ?>
    答案:1.
    考查:static和++。
    因static $count,所以只在第一次
    调用get_count的时候对$count赋值
    为0,第二次再进来这个函数,则不会
    第二次赋值。其次就是return $count++
    和return ++$count了,前者先返回,
    后者先++再返回。

    5

    题目五:

    <?php
    $arr= array(0 =>1,'aa' =>2,3,4);
    foreach($arr as $key => $val){
     print($key == 'aa' ? 5 : $val);
    }
    ?>
    答案:5534.
    考查:类型转换。
    因遍历数组第一次的时候,$key和aa的比
    较实际就是0和aa的比较,一个是int一个
    是string,这个时候会转换类型,将字符
    串转换为数字再与数字比较。所以0=='aa'
    就是0==0,所以为true,也就是输出5。
    虽然PHP是若类型语言,但是人家也有类
    型的好吗。

    6

    题目六:

    <?php
    echo count (false);
    $a = count ("567")  + count(null)
     + count(false);
    echo $a;
    ?>
    答案:2.
    考查:count的用法。
    因count()的官方解释“If the parameter
     is not an array or not an object 
     with implemented Countable 
     interface, 1 will be returned.”.
     意思是说,如果不是数组或者对象的其他
     类型,返回1.那么这个值应该就是1+0+1
     了(boolen人家也是一个类型,虽然是
     讨厌的false)。NULL的意思是没有值,
     难道在计数函数中还能有1?

     

    7

    题目七:

    <?php
    $arr = array(1,2,3);
    foreach($arr as &$val) {
    $val += $val % 2 ? $val++ : $val--;
    }
    $val = 0;
    print(join('',$arr));
    ?>
    答案:330。

    考查:++和&。


    因foreach结束后的数组应该是array(3,3,7);最后给第三个元素赋值为0,所以就是330了。其中注意的是&,如果有&则是对原变量操作,如果没有,则是先生成一个新变量,然后给这个变量复制,最后操作的是这个新变量。

    8

    题目八:

    <?php
    echo intval((0.1+0.7)*10);
    ?>
    答案:7。
    考查:浮点数的概念。
    因0.1+0.7=0.8    0.8*10=8  所以转换
     成整数后还是8?错!因为0.1+0.7=0.8是
     浮点数,0.8*10在数学计算中是正整数8,
     可是在计算机中它仍然是浮点数8,什么叫
     浮点数8?每一个看起来像整数的浮点数,
     其实都不是整数,比如这个8,它其实只是
     7.9999循环,无限接近于8,转换成整数会
     舍弃小数部分,就是7喽。

    9

    题目九:

    <?php
    ini_set('display_errors',0);
    $arr = array(1=>1,3=>3);
    $i = 2;
    $a = 'test' . isset($arr[$i]) ? 
    $arr[$i] : $i;
    请问$a的值是什么?
    A、test B、NULL C、2 D、test2
    ?>
    答案:B。
    考查:优先级。
    因“."的优先级高于三元运算符"?:"。所以程
     序其实报错了。会说$arr的索引2不存在。

    10

    题目十:

    <?php
    $a = 3;
    $b = 5;
    if($a = 5 || $b = 7) {
        $a++;
        $b++;
    }
    echo $a . " " . $b;
    ?>
    A、6 8  B、6 6  C、2 6  D、1 6  E、4 6
    答案:D。
    考查:优先级,基础概念,++。
    因“="的优先级低于“||”,所以先逻辑判断再赋值。
     也就是($a = (5 || $b = 7))。所以,最后
     其实给a赋值了,$a等于1.

    11

    题目十一:

    <?php
    $x = 2;
    echo $x == 2 ? '我' : $x == 1 ? '你' 
    : '它';
    ?>
    输出的结果是()
    A、我
    B、你
    C、它
    D、syntax error
    答案:B。
    考查:优先级。

     因“=="的优先级高于“?:”。我已经不想说为什么了,整理一下这种东西,我感觉要疯了,除了笔试题外估计也不会遇到了吧。

  • 相关阅读:
    Linux kernel pwn (四): Bypass SMEP
    Linux kernel pwn(三):Double Fetch
    Linux kernel pwn (二):UAF
    vue安装
    html标签
    javascript简介
    html样式 CSS(Cascading Style Sheets)
    html标签
    scala基础——scala变量
    elasticsearch日常维护
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9523375.html
Copyright © 2011-2022 走看看