不会的php面试题! 1.除数组内一个元素如何找到删除的是哪个?比如$arr=array{1,2,3,4,5,....1000} 删除一个 找出被删除的元素?不用array_diff()2.不用php方法写个函数拷贝变量3.输出2010年第13个星期的星期二的日期4.做新闻发布产生的静态页面,如果换了模板,以前的新闻怎么处理?不会再重新生成吧?5.多个服务器如何共享session?头疼 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.除数组内一个元素如何找到删除的是哪个?比如$arr=array{1,2,3,4,5,....1000} 删除一个 找出被删除的元素?不用array_diff()foreach循环比较2.不用php方法写个函数拷贝变量没明白3.输出2010年第13个星期的星期二的日期应该有函数,不知道是哪个。4.做新闻发布产生的静态页面,如果换了模板,以前的新闻怎么处理?不会再重新生成吧?可以Rewrite重定向5.多个服务器如何共享session?用同一个域名 1可以这样考虑echo 1001*500 - array_sum($arr);//得到被删除的元素值4的需求感觉不够明确,,,,,,旧新闻,要不要新模板是否一定要生成静态页面而生成静态页面,可以一次性,也可以通过404页面来触发5可能是想考数据库共享session? echo 1001*500 - array_sum($arr);//得到被删除的元素值这是个好主意! 1 一般情况$array_a = array("a","b","c","d","e");$array_b = array("a","b","d","e");$array_ab = array();$array_b2 = array_flip($array_b);foreach($array_a as $val){ if(!isset($array_b2[$val])){ $array_ab[] = $val; }}var_dump($array_ab); 第三题/*******系统以每年第一个星期一开始,算做本年的第一个星期********///$year: 年份//$weeks: $year中的第$weeks个星期//$week: $weeks星期中的星期几function getYmd($year,$weeks,$week){ $startstamp = mktime(0,0,0,1,1,$year); do{ if(date("W",$startstamp)==1){ break; }else{ $startstamp += 24*60*60; continue; } }while(1); $seconds = (($weeks-1)*7+($week-1))*24*60*60; $result = date("Y-m-d",$startstamp+$seconds); return $year."年的第".$weeks."个星期的星期".$week."是: ".$result;}echo getYmd("2010","13","2"); 多个服务器如何共享session 考的应该是load balance吧 1001*500是1到1000相加的和,array_sum这个函数的意思你是知道的(不知道查手册),$arr是删除后的数组,所以array_sum($arr);是什么意思,你也知道了那么1001*500 - array_sum($arr)你应该知道是什么意思了。通用的方法还是用:<?php$array_a = array("a"=>'张三',"b"=>'李四',"c"=>'王五',"d"=>'麻六',"e"=>'刘七');$array_b = array("a"=>'张三',"c"=>'王五',"e"=>'刘七');foreach($array_a as $k=>$v){ if(!in_array($v,$array_b)){ $del_arr[$k] = $v; }}var_dump($del_arr);?> 第3题$W = 13;$w = 2;echo date("Y-m-d", strtotime( -((date('W')-$W)*7+(date('w')-$w)).' day')); 关于第1题仅就 $arr=array{1,2,3,4,5,....1000} 删除一个 找出被删除的元素?而言#2的解答是正确的,不过这就成了智力测验了,与 php 没什么直接关系考虑到还有 不用array_diff() 的说明,可见删除元素是在原数组的副本上进行的这样,知识要点就是:从数组中删除一个元素,不改变原有的下标顺序 第三题<?phpfunction getday( $Year, $Week, $day ) { $Year = $Year . '-01-01'; //设置当前年份第一天的日期格式 $blank = 6 - date('w', $Year); //计算出当前年份第一天是星期几(PHP中星期日代表0,所以一个星期最大为6,这样可以计算出当前日期间隔星期日为多少天),假如当前年份第一天为星期五 $day = (($Week - 1) * 7 + $day) * 24 * 60 * 60;//这里计算所要求的日期隔当前年份第一天为多少天 $day = $day + $blank * 24 * 60 * 60; $day = date('Y-m-d', strtotime($Year) + $day); return $day;}//1283409658print_R(getday('2010', '13', '2'));?>第五题,估计它是想考session_set_save_handler函数,至于保存的方式有数据库,以及memcache,都可以 1、循环array_search数组1中的每个元素在数组2中,如果查不到,那么就是所删除的元素了2、这个就不用说了,不知道是我想得简单了(看不懂),还是本来就是简单3、echo date('Y-m-d H:i:s', mktime(0, 0, 0, 1, 1, 2010) + (12 * 7 * 24 * 3600) + (2 * 24 * 3600));4、没明白什么意思5、同一个域名就行了,要不用数据库session也行 改下我提交的3(忘记判断2010年整的时候的星期了),如下:echo date('Y-m-d H:i:s', mktime(0, 0, 0, 1, 1, 2010) + (11 * 7 * 24 * 3600) + (2 * 24 * 3600) + ((7 - date('w', mktime(0, 0, 0, 1, 1, 2010))) * 24 * 3600)); 呢输出2010年第13个星期的星期二的日期先要判断2010年1月1号是星期五,要求第13个星期的星期二的日期date("y-m-d",(12*7+2)-5)*24*3600)我先假定1月1号是星期一,算出前12个星期,最后加上第13个星期的2天,最后再减去第一个星期多加的5天. 这个规则可以事先指定 并不是大问题 但是系统是从第一个礼拜一算的试一试 echo date('W', mktime(0, 0, 0, 1, 1, 2010));echo date('W', mktime(0, 0, 0, 1, 4, 2010));按照你的规则 统一起来即可 echo 1001*500 - array_sum($arr)这方法好,佩服 $arrOld = array('a', 'c', 'd', 'e', 'f');$arrNew = array('a', 'c', 'e', 'f');for($i=0; $i<count($arrOld); $i++) { if (!in_array($arrOld[$i], $arrNew)) { $arrDel = $arrOld[$i]; echo $arrDel; }} 想转行用了N年PHP了,这些问题怎么还不会 替换源码中获取后的URL的问题! 面向对象??福兮祸兮?? php 中用完的数据库链接和返回的记录集,在用完之后,是否需要手工释放资源呢? 关于是否存在的验证 急问如何使用参数形式把值赋给sql执行语句? 求教:怎么把大写数字转化成阿拉伯数字? 高手帮帮忙呀!!!为何 odbc_num_rows($result_id) 总是返回 -1? php可否解决实时检测数据库更新后的显示问题? 帮我解答一下基础的问题 关于mysql的问题 求救关于ini文件的配置,关于oracle的连接 (菜鸟飞飞) 页面内点击按钮,出现当前系统的时间戳
foreach循环比较2.不用php方法写个函数拷贝变量
没明白3.输出2010年第13个星期的星期二的日期
应该有函数,不知道是哪个。4.做新闻发布产生的静态页面,如果换了模板,以前的新闻怎么处理?不会再重新生成吧?
可以Rewrite重定向5.多个服务器如何共享session?
用同一个域名
4的需求感觉不够明确,,,,,,旧新闻,要不要新模板是否一定要生成静态页面
而生成静态页面,可以一次性,也可以通过404页面来触发5可能是想考数据库共享session?
$array_b = array("a","b","d","e");
$array_ab = array();$array_b2 = array_flip($array_b);
foreach($array_a as $val){
if(!isset($array_b2[$val])){
$array_ab[] = $val;
}
}
var_dump($array_ab);
//$year: 年份
//$weeks: $year中的第$weeks个星期
//$week: $weeks星期中的星期几
function getYmd($year,$weeks,$week){
$startstamp = mktime(0,0,0,1,1,$year);
do{
if(date("W",$startstamp)==1){
break;
}else{
$startstamp += 24*60*60;
continue;
}
}while(1); $seconds = (($weeks-1)*7+($week-1))*24*60*60;
$result = date("Y-m-d",$startstamp+$seconds);
return $year."年的第".$weeks."个星期的星期".$week."是: ".$result;
}
echo getYmd("2010","13","2");
array_sum这个函数的意思你是知道的(不知道查手册),
$arr是删除后的数组,所以array_sum($arr);是什么意思,你也知道了
那么1001*500 - array_sum($arr)你应该知道是什么意思了。通用的方法还是用:<?php
$array_a = array("a"=>'张三',"b"=>'李四',"c"=>'王五',"d"=>'麻六',"e"=>'刘七');
$array_b = array("a"=>'张三',"c"=>'王五',"e"=>'刘七');
foreach($array_a as $k=>$v){
if(!in_array($v,$array_b)){
$del_arr[$k] = $v;
}
}
var_dump($del_arr);
?>
$W = 13;
$w = 2;
echo date("Y-m-d", strtotime( -((date('W')-$W)*7+(date('w')-$w)).' day'));
仅就 $arr=array{1,2,3,4,5,....1000} 删除一个 找出被删除的元素?
而言#2的解答是正确的,不过这就成了智力测验了,与 php 没什么直接关系考虑到还有 不用array_diff() 的说明,可见删除元素是在原数组的副本上进行的
这样,知识要点就是:从数组中删除一个元素,不改变原有的下标顺序
function getday( $Year, $Week, $day ) {
$Year = $Year . '-01-01'; //设置当前年份第一天的日期格式
$blank = 6 - date('w', $Year); //计算出当前年份第一天是星期几(PHP中星期日代表0,所以一个星期最大为6,这样可以计算出当前日期间隔星期日为多少天),假如当前年份第一天为星期五 $day = (($Week - 1) * 7 + $day) * 24 * 60 * 60;//这里计算所要求的日期隔当前年份第一天为多少天 $day = $day + $blank * 24 * 60 * 60; $day = date('Y-m-d', strtotime($Year) + $day);
return $day;
}
//1283409658
print_R(getday('2010', '13', '2'));
?>第五题,估计它是想考session_set_save_handler函数,至于保存的方式有数据库,以及memcache,都可以
2、这个就不用说了,不知道是我想得简单了(看不懂),还是本来就是简单
3、echo date('Y-m-d H:i:s', mktime(0, 0, 0, 1, 1, 2010) + (12 * 7 * 24 * 3600) + (2 * 24 * 3600));
4、没明白什么意思
5、同一个域名就行了,要不用数据库session也行
echo date('Y-m-d H:i:s', mktime(0, 0, 0, 1, 1, 2010) + (11 * 7 * 24 * 3600) + (2 * 24 * 3600) + ((7 - date('w', mktime(0, 0, 0, 1, 1, 2010))) * 24 * 3600));
先要判断2010年1月1号是星期五,
要求第13个星期的星期二的日期
date("y-m-d",(12*7+2)-5)*24*3600)
我先假定1月1号是星期一,算出前12个星期,最后加上第13个星期的2天,最后再减去第一个星期多加的5天.
试一试
echo date('W', mktime(0, 0, 0, 1, 1, 2010));
echo date('W', mktime(0, 0, 0, 1, 4, 2010));
按照你的规则 统一起来即可
这方法好,佩服
$arrOld = array('a', 'c', 'd', 'e', 'f');
$arrNew = array('a', 'c', 'e', 'f');for($i=0; $i<count($arrOld); $i++) {
if (!in_array($arrOld[$i], $arrNew)) {
$arrDel = $arrOld[$i];
echo $arrDel;
}
}