foreach一般用于遍历数组:
<?php
$a=array("1"=>"one","2"=>"two");
foreach ($a as $value)
{//只取值
echo $value.'<br/>';
}
foreach ($a as $key=>$value)
{//取键与值
echo $key." ".$value.'<br/>';
}
?>
foreach一般用于遍历数组:
<?php
$a=array("1"=>"one","2"=>"two");
foreach ($a as $value)
{//只取值
echo $value.'<br/>';
}
foreach ($a as $key=>$value)
{//取键与值
echo $key." ".$value.'<br/>';
}
?>
将dos命令用1左边的键包围,再echo,会返回执行命令的结果。
<?php
$a=`dir c:\\`;
//不是单引号,而是1左边的键
echo $a;
?>
+ 两数组元素合并 == 键值相同返回true ===键值相同且数据类型相同,顺序一致返回true != 键值不同返回true !==不具有相同键值,且顺序及数据类型不一致时返回true
===会判断两者数据类型是否相同,如:
<?php
$a="7";
$b=7;
var_dump($a==$b);//true
var_dump($a===$b);//false
?>
<?php
define("COLOR","RED",TRUE);
echo cOLOR;
?>
第三个参数可选,TRUE即忽略常量名大小写
<?php
function fun(){
static $a=0;
//定义静态变量,第二次执行不会再赋0值
echo $a;
$a=$a+1;
}
fun();
fun();
fun();
//运行函数
?>
结果应该是012
直接上代码了:
<?php
function fun(){
Global $a;
//在函数内部用global关键字定义全局变量,不能同时赋值,global不区分大小写
$a="abcd";
}
fun();
//运行函数
echo $a;
//函数外部读取全局变量
?>
jsp:setProperty和jsp:getProperty分别用于设置或读取JavaBean的属性,在Java中,设置或读取属性就是调用setter和getter方法。 写个JavaBean,User.java:
package pocketdigi;
public class User {
private String userName;
//定义变量
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
//定义Getter和Setter方法,可以按alt+shift+s,再按r,快速生成
}
JSP中使用方法:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<jsp:useBean id="user" class="pocketdigi.User"></jsp:useBean>
<html>
<head>
<title>My JSP '1.jsp' starting page</title>
</head>
<body>
<jsp:setProperty property="userName" name="user" value="张三"/>
<!-- property填变量名就可以,不用填setter或getter方法名,因为变量一般是private,所以需要通过public的setter或getter方法名来判断变量名.上面一行相当于user.setUserName("张三"); -->
<jsp:getProperty property="userName" name="user"/>
<!-- 直接输出user的userName属性,相当于out.println(user.getUserName()); -->
</body>
</html>
下面的例子是1.jsp包含index.jsp,并向index.jsp传递参数,index.jsp接收参数并显示. 1.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP '1.jsp' starting page</title>
</head>
<body>
<jsp:include page="index.jsp">
<jsp:param value="我是中文" name="param" />
</jsp:include>
</body>
</html>
index.jsp接收参数:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String param=request.getParameter("param");
out.println(param);
%>
运行时发现,即使两个文件的Encoding都是UTF-8,中文还是显示乱码。解决方法:增加一个过滤器,把ServletRequest的编码转换成UTF-8. 新建一个类EncodeFilter,实现javax.servlet.Filter接口:
package pocketdigi;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodeFilter implements Filter {
private FilterConfig filterConfig;
private String encode;
@Override
public void destroy() {
// TODO Auto-generated method stub
filterConfig=null;
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding(encode);
//设置编码
filterChain.doFilter(request, response);
//调用FilterChain中的下一个过滤器,如果这是最后一个过滤器,调用请求的资源
//过滤器是在传送参数之后,被接收到之前调用的
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
this.filterConfig = filterConfig;
encode=filterConfig.getInitParameter("Encode");
//读取web.xml中配置的参数
}
}
在web.xml中还需要配置过滤器:
<filter>
<filter-name>EncodeFilter</filter-name>
<filter-class>pocketdigi.EncodeFilter</filter-class>
<init-param>
<param-name>Encode</param-name>
<param-value>UTF-8</param-value>
<!-- 设置参数,在过滤器中读取 -->
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodeFilter</filter-name>
<url-pattern>/*</url-pattern>
<!-- /是相对该项目而言,并非站点根目录,这里过滤该对项目所有jsp和servlet请求 -->
</filter-mapping>
编译指令include只能包含静态页面,而且是在编译过程前包含,如在a.jsp中include b.jsp,其实就是把b.jsp的源文件复制到a.jsp对应的位置,然后再编译生成一个Servlet,注意,这里只生成一个Servlet。 而jsp:include是在编译后,运行时包含,在上面的例子中,编译时会生成两个servlet,运行时,a.jsp生成的servlet再包含b.jsp生成的servlet,所以jsp:include可以包含动态页面,传递参数。 举个最简单的例子,a.jsp中包含b.jsp,在b.jsp中声明一个变量,如果是用编译指令include,在a.jsp中,include b.jsp代码后面,就可以直接引用这个变量,而如果用jsp:include,MyEclipse会直接报错,提示变量未声明。