php 面试题(1)

一:

<?php
    header("content-type:text/html;charset=utf-8");
    echo "<pre>";
    // 1.写一个函数getMax($a, $b, $c),要求传入三个数字,在该函数中用最少的代码来返回最大值;
    function getMax($a,$b,$c){
        return max($a,$b,$c);
    }
    // echo getMax(9,5,3);






    // 2.写一个函数cutString($str, $len),要求传入字符串和要截取多少个字
    // (一个汉字算一个字,两个英文字符或者数字算一个字),默认从字符串第一个字符开始截取;
    function cutString($str,$len){
        $reg = "/^[A-za-z0-9]+$/";
        if(preg_match($reg,$str)){
            // return 1;
            return substr($str,$len*2);
        }else{
            // return 2;
            return substr($str,$len);
        }
    }
    // echo cutString('12313asddasd',3);




    // 3.自己写一个函数sortArray($arr),实现数组从小到大排序,不允许使用sort函数;
    function sortArray($arr){
        for($i=1;$i<count($arr);$i++){
            for($j=0;$j<count($arr)-$i;$j++){
                if($arr[$j]>$arr[$j+1]){
                    $arr1 = $arr[$j];
                    $arr[$j] = $arr[$j+1];
                    $arr[$j+1] = $arr1;
                }
            }
        }
        return $arr;
    }

    // print_r(sortArray(array(4,5,3)));






    // 4.写一个函数createArray()创建一个长度为10的数组,数组中的元素满足斐波拉契数列的规律.
    // (斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……特别指出:
    // 第0项是0,第1项是第一个1。)
    function createArray($length){
        $arr = array(1,1);
        for($i=2;$i<$length;$i++){
            $arr[$i] = $arr[$i-1]+$arr[$i-2];
        }
        return $arr;
    }

    print_r(createArray(10));





?>


二“:

     // 表内容:
     //        2005-05-09 胜
     //        2005-05-09 胜
     //        2005-05-09 负
     //        2005-05-09 负
     //        2005-05-10 胜
     //        2005-05-10 负
     //        2005-05-10 负  
     //    如果要生成下列结果, 该如何写sql语句?  
     //                   胜 负
     //        2005-05-09  2 2
     //        2005-05-10  1 2
    $sql1 = "select time,sum( case 1 when con='胜' then 1 else 0 end ) as sheng,
                         sum( case 1 when con='负' then 1 else 0 end ) as fu
                         from shengli GROUP BY time";
    


     // 表中有A B C三列,用SQL语句实现:
     //    当A列大于B列时选择A列否则选择B列
     //    当B列大于C列时选择B列否则选择C列
    $sql2 = "select if(a>b,a,b) as 'a>b',if(b>c,b,c) as 'b>c' from abc";
    


      // 有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记 录并按以下条件显示出来(并写出您的思路):  大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
      //   显示格式:           
      //       语文                  数学                英语          
      //       及格              优秀                不及格
    $sql3 = "select if(语文>=80,'优秀',if(语文>=60,'及格','不及格')) as 语文,
                     if(数学>=80,'优秀',if(数学>=60,'及格','不及格')) as 数学,
                     if(英语>=80,'优秀',if(英语>=60,'及格','不及格')) as 英语
                     from sql3";



     // 用一条SQL 语句 查询出每门课都大于80 分的学生姓名
     //    name   kecheng   fenshu
     //    张三     语文       81
     //    张三     数学       75
     //    李四     语文       76
     //    李四     数学       90
     //    王五     语文       81
     //    王五     数学       100
     //    王五     英语       90
    $sql4 = "select DISTINCT name from sql4 where name not in(select name from sql4 where fenshu<=80)";


    // 课程编号2的成绩比课程编号1的成绩低的所有同学的名字和学号
    $sql5 = "select * from Student where `S#` in(
                                        select `S#` from SC where `C#` = 2 and Score <
                                        (select min(Score) from Sc where `C#` = 1 ))";
    // echo $sql1;die;

    // 查询没有学全所有课程的同学的学号,姓名
    $sql6 = "select * from Student where `S#` not in(select `S#` from sc)";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值