汇博面试题片段

本文介绍了PHP编程中的实用技巧,包括日期时间操作、变量交换、魔术方法应用、表单验证流程优化、AJAX使用技巧等内容,适合PHP开发者学习参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用php打印出当天的时间,打印格式是2007-05-01 22:21:21
(用php打印出前一天的时间,打印格式是2007-05-01 22:21:21)
<?php
//echo date('Y-m-d H:i:s',time()-60*60*24
echo date("Y:m:d H:i:s",strtotime("-1 day"));
?>
用php写一段代码,实现不使用第3个变量,交换$a,$b的值,$a和$b的初如值自己定
方案一:适用于变量为数字的
$a =1;
$b =2;
$a = $a+$b; //$a=3,$b=2;
$b = $a-$b;    //$a=3,$b=1;
$a = $a-$b; //$a=2,$b=1;
方案二:使用所有的变量
$a = 'abc';
$b = 'def';
list($a,$b) = array($b,$a);        //        list ()— 把数组中的值赋给一些变量
echo $a,$b;
如何将’John’新增到users队列?
请写出至少四个php魔术方法.
__get()
__set()
__isset()
__unset()


 
在php5中如何使对象可以像数组一样进行foreach循环
Include 和 require 有什么区别?
请解释HTTP协议状态码中的200、404、500的含义。
MVC软件设计模式的含义,并简述其特点。
你使用过哪些php框架
<input type=”button” value=”提交” onclick=”fun(this)”>,实现给用户确认的机会,如果确定,表单提交。
(

表单提交过程中的onsubmit()和onclick()
1、问题描述
有一个表单可以处理三个事件:新建、修改和删除,要求在处理删除事件时给出确认提示,其他操作只要输入合法,提交后就可进行。
FormValid(form)对输入数据统一进行合法性验证。

2、实施
为了区分提交的事件,在三个按钮的onclick()中为隐藏域赋值作为标记。
<input type="hidden" name="hidden_submit" id="hidden_submit" value="none" />
然后将三个按钮类型设置为button,验证通过后由submit()函数提交即可。
<input type="button" value="新建" onclick="fun_new(this)"/>
<input type="button" value="修改"  onclick="fun_update(this)" />
<input type="button" value="删除" onclick="fun_delete(this)"/>
对于需要确认才能提交的删除按钮:
function fun_delete(){
  document.form.hidden_submit.value = "DELETE";
  if(FormValid(document.form)){
    if(confirm("确认删除?")){
      document.form.submit();
    }
  }
}
3、讨论
既然FormValid()函数是全表单的验证,那能否在表单的onsubmit()中进行?
<form id="form" name="form" method="post" action="#" onsubmit="return FormValid(this)"></form>
onsubmit()函数在返回值为true时提交表单。
这时,三个按钮的类型应为submit()。
这样,按钮中只需给隐藏域赋值,验证交予表单处理。然而问题是如何给出删除确认?
倘若在删除按钮的onclick()函数中进行,则有可能用户点击确认删除,而结果却是不满则提交条件。这是因为按照逻辑,应是数据合法性验证通过后才能给出删除操作的确认提示,而事实上onclick()函数的执行顺序先于onsubmit()。
所以只能在onsubmit()中给出删除提示,根据之前的思路很容易写出:
<form id="form" name="form" method="post" action="#" onsubmit="fun_submit(this)"></form>
function fun_submit(form){
  var flag = false;
  if(FormValid(form)){
    flag = true;
    if( form.hidden_submit.value=="DELETE"){
      if(!confirm("确认删除?"))     flag = false;
    }
  }
  return flag;
}
或者直接用三元表达式写在form中:
<form id="form" name="form" method="post" action="#"
onsubmit="return FormValid(this)?this.hidden_submit.value == 'DELETE'? confirm('确定删除该用户账号?'):true::false">
4、总结
问题很简单,主要两个要点:
1、onclick()和onsubmit()的执行顺序。参考onSubmit和onclick区别

onsubmit是表单上(也只能是表单)用的,提交表单前会触发
onclick是按钮等控件上用的,用来触发点击事件.

用作数据验证的时候,可以选择在submit按钮上的onclick中验证,可以在onsubmit中验证.但是从事件触发顺序上来说,onclick更早.顺序是:
用户点击按钮->onclick->如果onclick返回有效或未处理onclick则提交表单->onsubmit->如果onsubmit未处理或返回true,则提交,否则取消提交.

onsubmit中返回false会引起取消表单提交;
onclick中返回false则会引起此次点击操作被判断为无效,则也就不会引起表单提交.

2、三目运算符可以简化代码,但有时不利于阅读。


)
<div id=”a”>some content</div>,<input type=”button” vlaue=”切换” onclick=”fun()”>,实现点击后div隐藏,再点击后显示

JS点击显示隐藏密码

思路:获取元素,判断点击,如果DIV显示就隐藏,如果DIV隐藏就显示出来。

复制代码
1 if(DIV是显示的){
2     div.style.display='none';
3 }
4 else{
5     div.style.display='block';    
6 }
复制代码
 

代码:

style:

1 <style>
2 #text{display:block;width:300px;cursor:pointer;height:20px;border:solid 1px #CCC;}
3 #menu{display:none;width:300px;height:100px;border:solid 1px #CCC;}
4 </style>
 

js:

复制代码
<script type="text/javascript">
window.onload=function(){
    var wenzi=document.getElementById('text');
    var div=document.getElementById('menu');
    wenzi.onfocus=function(){
            if(div.style.display=='block'){ // == 判断div.display是否为显示
                    div.style.display='none'; //= 赋值也可了解成改变
                }
                else{
                    div.style.display='block';
                }
        }
};
</script>
复制代码
 

html

<span id="text">点击显示菜单,再点击隐藏菜单</span>
<div id="menu">这是文字哦。</div>


你是如何使用jquery中的ajax的?
Jquery中的hover()和toggle()有什么区别?
Jquery中的hover()和toggle()用法

博客分类: 前端开发
hover(fn1,fn2): 一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法。当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数。
//当鼠标放在表格的某行上时将class置为over,离开时置为out。
$("tr").hover(function(){
$(this).addClass("over");
},
        function(){
        $(this).addClass("out"); 
});
 
 
toggle(evenFn,oddFn): 每次点击时切换要调用的函数。如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。随后的每次点击都重复对这两个函数的轮番调用。
        //每次点击时轮换添加和删除名为selected的class。
        $("p").toggle(function(){
                $(this).addClass("selected");   
        },function(){
                $(this).removeClass("selected"); 
        });
 
 
两个函数都能实现轮番调用两个函数。。。。

按要求写出sql语句
表 info_user(用户表)
U_idU_nameArea_id
1张三01
2李四02
3王五03
...


表 code_area(地区表)
Area_idArea_name
01重庆
02成都
03北京
...

查出所在地区为重庆的用户,形如

U_idU_nameArea_name
1张三重庆


按要求写出sql语句

表 info_user(用户表)

U_idU_name
1张三
2李四
3王五
...




表 info_user_consumer(用户消费表)


C_idU_id
11
21
32
42
52
63
71
8Null
...

查出前10位消费次数小于2的会员,按消费次数排倒序,形如

U_idU_nameC_count(消费次数)
3王五1


这个是直接用一个字查询当作字段 作了个别名
select (select U_id from ((select U_id,count(C_id) C_count from info_user_consumer group by U_id having C_count<2) b)) U_id,U_name,C_count from (select U_id,count(C_id) C_count from info_user_consumer group by U_id having C_count<2) b inner join info_user on b.U_id = info_user.U_id;


下面这个是简化了的,它是取临时表中的U_id 作为字段显示出来
select b.U_id,U_name,C_count from (select U_id,count(C_id) C_count from info_user_consumer group by U_id having C_count<2) b inner join info_user on b.U_id = info_user.U_id;









根据以下条件编写程序,php实现
F(n)=1        当n=1,2时
F(n)=F(n-1)+F(n-2)  当n>2
编写函数fib($n),输入n的值求出值

<?php
//非递归
function foo_1($num){
    $arr = array();
    if ($num > 0) $arr[0] = 2;
    if ($num > 1) $arr[1] = 3;
    if ($num > 2) {
        $result = $arr[0] + $arr[1];
        for($i=2; $i<$num; $i++) {
            $arr[$i] = $arr[$i-1] + $arr[$i-2];
            $result = $result + $arr[$i];
        }
    }
    print_r($arr);
}



//递归
function foo_2($num){
    if ($num == 1 ) {
        return 2;
    } elseif ($num == 2) {
        return 3;
    } elseif ($num > 2) {
        return foo_2($num-1) + foo_2($num-2);
    }
}

foo_1(4);
echo foo_2(4);

?>

使用php写一段简单查询,查出所有姓名为”张三”的内容并打印出来(包含链接mysql数据库、查询数据、展示数据)
Table User
Name Tel Content Date
张三 13398876543 大专毕业 2006-10-11
张三 13398876343 本科毕业 2006-10-15
张四 13398886343 本科毕业 2006-10-15

<?php
//连接数据库
mysql_connect("localhost","root","");//连接服务器
mysql_select_db("User");//连接数据库
mysql_query("set names utf8");//设置数据库编码
//$res=mysql_query($sql);
$result=mysql_query("select * from student where Name='张三'");
if($row=mysql_fetch_array($result))
{
 echo $row['Name'].$row['Tel'].$row['Content'].$row['Date'];
 echo "<br>";
}else{
 echo "读取失败!";
}

?>

机器人是一种广泛应用于工业领域的自动化设备,支持多种通信协议以实现与外部系统的数据交互。FTP(File Transfer Protocol)作为一种常见的文件传输方式,在工业场景中常用于远程配置、程序更新或日志收集等用途。 ### FTP 传输配置方法 #### 1. 网络环境准备 在进行 FTP 配置之前,确保以下条件满足: - 机器人控制系统已连接到局域网,并具有固定 IP 地址。 - FTP 服务器已部署并运行正常,且可被机器人访问。 - 已知 FTP 服务器的地址、端口、用户名和密码。 #### 2. 启用 FTP 功能 部分机器人系统默认不启用 FTP 客户端功能,需通过控制系统的设置界面或脚本语言(如 KAREL 或 Python 脚本接口)开启。 ```python # 示例:使用 Python 脚本模拟 FTP 连接配置 import ftplib ftp = ftplib.FTP() ftp.connect("192.168.0.100", 21) # 替换为实际的 FTP 服务器地址和端口 ftp.login("username", "password") # 使用有效的用户名和密码登录 ``` #### 3. 文件上传/下载操作 一旦建立连接,即可执行文件的上传或下载操作。以下是一个简单的文件上传示例: ```python with open("/robot_data/example_file.txt", "rb") as file: ftp.storbinary("STOR example_file.txt", file) # 将本地文件上传至服务器 ``` 同样地,下载文件可以使用如下代码: ```python with open("/robot_data/downloaded_file.txt", "wb") as file: ftp.retrbinary("RETR remote_file.txt", file.write) # 从服务器下载文件 ``` #### 4. 关闭连接 完成所有操作后,应正确关闭 FTP 连接以释放资源。 ```python ftp.quit() ``` #### 5. 自动化集成 为了实现定时或事件触发的 FTP 传输任务,可以将上述脚本集成到机器人的主控程序中,并设置相应的触发条件,例如通过 PLC 信号或时间调度器[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值