- 自定义分界符
- 单引号双引号
- 花括号&连接符
- foreach$可变变量&=>、->
- 函数strcmp()与strcasecmp()
<body>
<?php
$str=<<<jstart
<script type="text/javascript">
alert("动态网页之美-php");
</script>
jstart;
echo $str;
?>
</body>
不知道为什么无法运行,在dw和zend都是运行错误,以后解决吧。。。
$abc='my name is tome';
echo $abc //结果是:my name is tom
echo '$abc' //结果是:$abc
echo "$abc" //结果是:my name is tom
</pre><pre name="code" class="php">
但是当用在sql语句中时当引号内有变量需要被解释时
如SQL语句可以写成:
$sql = "select * from user where id = '$id'";
$sql = "insert into user (`user`,`pwd`) values ('$a','$b')";
$sql = "select * from user where id = {$id}";
$sql = "insert into student values ('', '".$_POST['User']."', '".$Pwd."','24')";
</pre><pre name="code" class="php">$result=mysql_query("SELECT*FROM $usertype WHERE loginnumber={$loginnumber} AND loginpassword='$loginpassword'");
$sql="INSERT INTO attendance(`student-id`,`s-time`,`e-time`)VALUES ('".$stu_id."','".$_POST['t1']."','$t2')";
变量都是可以被解释的。
{getName()}'。因为里面不含$,所以花括号不会被当作界定符
传统的中规中矩的写法
<?php
$user= $_POST['user'];
$password = $_POST['password'];
$name = $_POST['name'];
echo "<p>Your order is as follows:</p>";
echo "<br />\$user=".$user;
echo "<br />\$password=".$password;
echo "<br />\$name=".$name;
?>
如果orderform.html里有很多表单变量,可以想像上面的赋值语句将会很长,而我们采用可变变量就可以优化为如下非常简洁的代码:
<?php
foreach ($_POST as $key => $value){
$$key = $value;
}
echo "<p>Your order is as follows:</p>";
echo "<br />\$user=".$user;
echo "<br />\$password=".$password;
echo "<br />\$name=".$name;
?>
<span style="font-size:14px;"><?php
unset($_POST['submit']);
// or
foreach ($_POST as $Key => $Value) {
if (strcasecmp($Key, 'submit') === 0) {
continue;
}
// Continue process
}
?></span>
<span style="font-family: 'Courier new';"><span style="font-size:14px;">
</span></span>
<span style="font-family: 'Courier new';"><span style="font-size:14px;">=> 是数组成员访问符号</span></span>
<span style="font-size:14px; font-family: 'Courier new';">-> 是对象成员访问符号</span>
比如: $array = array("site map"=>"map.php"); //定义了一个数组,包含一个数组成员:键名为site map,值为map.php $this->$name = $value$this 在php语言里是个特定的变量,它代表了类本身,->是访问其类成员的操作符,$this->$name = $value,这句代码意思是:将当前类的name变量的值设置为 $value去掉其中一个值
5.函数strcmp()与strcasecmp() & 函数Rand()
rand() 函数返回随机整数。
语法
rand(min,max)
<?php
echo(rand();
echo(rand();
echo(rand(10,100))
?>
输出:
17757
3794
97
输出随机数字、字母
<?php
$str="0123456789abcdefghijklmnopqrstuvwxyz";
$n=5;
$len=strlen($str)-1;
for($i=0;$i<=$n;$i++)
{
$s=$s.$str[rand(0,$len)];
}
echo $s;
?>
PHP使用strcmp()函数和strcasecmp()函数可以按字节对字符串进行比较。
strcmp()函数区分字符的大小写。
strcasecmp()函数不区分字符的大小写。
strnatcmp()不区分大小写,按照自然排序。而strcmp()函数是按照字典排序。
If you want to compare $_SESSION variables to a string use this
<?php
if(isset($_SESSION['usertype']))
{
echo "usertype " .$_SESSION['usertype'];
$ut = $_SESSION['usertype'];
if(strnatcmp($ut,"admin"))
{
echo "hello admin";
}
}
?>
下面的例子展示了该算法与计算机常规字符串比较算法( strcmp() 所使用的)的区别:
<?php
$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
echo "Standard string comparison ";
usort($arr1, "strcmp");
print_r($arr1);
echo " Natural order string comparison ";
usort($arr2, "strnatcmp");
print_r($arr2);
?>
以上例程会输出:
Standard string comparison Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png ) Natural order string comparison Array ( [0] => img1.png [1] => img2.png [2] => img10.png [3] => img12.png )