zoukankan      html  css  js  c++  java
  • PHP面试题

    写一段PHP代码,确保多个进程同时写入同一个文件成功

    $fp = fopen('slq.sql',"r+");
    $time = time();
    $wait_time = 0;
    while (!flock($fp,LOCK_EX)){ //获取独占锁,写入程序  return bool
            sleep(10);
            $wait_time = time();
            if($wait_time-$time>60){
                break;
            }
    }
    fwrite($fp,"xxxxx")
    flock($fp,LOCK_UN);//释放锁
    fclose($fp);

    无限极递归

    //无限极分类
    $arr = array(
        ['value' => 1, 'parent_id' => 0, 'id' => 1],
        ['value' => 2, 'parent_id' => 3, 'id' => 2],
        ['value' => 3, 'parent_id' => 0, 'id' => 3],
        ['value' => 4, 'parent_id' => 3, 'id' => 4],
        ['value' => 5, 'parent_id' => 1, 'id' => 5],
    );
    
    function notLimit($arr, $parent_id = 0, $level = 1)
    {
        static $new_arr = [];
        foreach ($arr as $k => $v) {
            if ($parent_id == $v['parent_id']) {
                $add['level'] = $level;
                $add['value'] = $v['value'];
                $add['id'] = $v['id'];
                $new_arr[] = $add;
                notLimit($arr, $v['id'], $level + 2);
            }
        }
        return $new_arr;
    }
    var_dump(notLimit($arr));

    有一个网页地址,比如PHP开发资源网主页:http://www.phpres.com/index.html,如何得到它的内容

    echo file_get_contents("http://www.baidu.com");
    
    $readcontents=fopen("http://www.baidu.com","r+");
    $contents=stream_get_contents($readcontents);
    fclose($readcontents);
    echo $contents;

    在HTML语言中,页面头部的meta标记可以用来输出文件的编码格式,以下是一个标准的meta语句<META http-equiv='Content-Type'content='text/html;charset=gbk'>,请使用PHP语言写一个函数,把一个标准HTML页面���的类似meta标记中的charset部分值改为big5。(新浪)

    请注意:
    (1)需要处理完整的html页面,即不光此meta语句
    (2)忽略大小写
    (3)'和"在此处是可以互换的
    (4)'Content-Type'两侧的引号是可以忽略的,但'text/html;charset=gbk'两侧的不行
    (5)注意处理多余空格
    编写正则表达式如下:
    $reg1="/(<meta\s*http-equiv\s*=\s*(['"]?)Content-Type(\2)\s*content\s*=\s*(['"])text/html;charset=)(UTF-8)(\4)(\s*/?>)/i";

    PHP中如何判断一个字符串是否是合法的日期模式:2007-03-13 13:13:13。要求代码不超过5行。

    function is_ture_form($time){
        if(date('Y-m-d H:i:s',strtotime($time)) == $time){
            echo '合法';
        }else{
            echo '不合法';
        }
    }
    $time = '2014-01-02 10:02:20';
    $time2= '2014-01-02 10:02:20';
    is_ture_form($time2);
    is_ture_form($time);
    
    echo date('Y-m-d H:i:s',strtotime($time)) == $time ?'合法':'不合法';

    PHP中,如何获得一个数组的键值?(酷讯)

    使用key()可以获得数组中当前元素的键名,使用current()则可以返回当前元素的值。
    使用array_keys()则可以得到数组中所有的键名,只能获取一维数组的键值,不能获取二维数组的键值。
    使用foreach结构foreach($arr as key=>value)可以通过key和value分别获取键名和值。

    如果模板是用smarty模板。怎样用section语句来显示一个名为$data的组

    $data=array(
    0=>array('id'=>8,'name'=>'name1'),
    1=>array('id'=>10,'name'=>'name2'),
    2=>array('id'=>15,'name'=>'name3')
    );
    
    <{section name=test loop=$data start=0 step=1}>
    id:<{$data[test].id}><br/>
    name:<{$data[test].name}><br/><br/>
    <{sectionelse}>
    数组为空
    <{/section}>
    
    
    <{foreach from=$data item=test}>
    id:<{$test.id}><br/>
    name:<{$test.name}><br/><br/>
    <{foreachelse}>
    数组为空
    <{/foreach}>

    哪个选项会匹配下边的这个正则表达式?(/.**xyzd/)

    A.******xyz

    B.*****_xyz1

    C.******xyz2

    D._*xyz

    答案:C

  • 相关阅读:
    Phpstorm 换行设置(复制 http://jingyan.baidu.com/article/86fae346b2cb673c49121ad3.html)
    php redis
    php写守护进程(转载 http://blog.csdn.net/tengzhaorong/article/details/9764655)
    进程 、进程组、会话、控制终端之间的关系 (转载 http://blog.csdn.net/yh1548503342/article/details/41891047)
    php等守护进程监控脚本(转载 http://www.9958.pw/post/php_script_scan)
    Http协议与TCP协议简单理解
    php 单线程 (http://bbs.csdn.net/topics/390778072)
    CSS reset
    Vue ref
    Vue 生命周期
  • 原文地址:https://www.cnblogs.com/webph/p/6628477.html
Copyright © 2011-2022 走看看