PHP的一些基本语法(数组,字符串)
PHP的一些基本语法(数组,字符串)
上篇写了PHP的一些基本语法,以及表单的提交和处理等,这一篇中接着上一篇写了数组的用法以及数组和字符串之间的相互处理,希望对大家有所帮助:
多维数组:
$arr1=array('a'=>'MD','b'=>'AD'...);
$arr2=array('c'=>'SD','d'=>'AE'...);
$arr=array('US'=>$arr1,'AB'=>$arr2);
使用多维数组:
echo "{$arr['US']['a']}";
Eg:
---arr1.php教程
<body>
<form action="arr.php" method="post">
<fieldset><legend>Enter your information in the form below:</legend>
<p><b>NAME:</b><input type="text" name="name" maxlength="40" size="20"></p>
<p><b>Interests:</b>
<input type="checkbox" name="interests[]" value="Music"/>Music
<input type="checkbox" name="interests[]" value="Movies"/>Movies
<input type="checkbox" name="interests[]" value="Books"/>Books
<input type="checkbox" name="interests[]" value="Skiing"/>Skiing
<input type="checkbox" name="interests[]" value="Napping"/>Napping
</p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="submit"/></div>
</form>
</body>
---arr.php
<body>
<?php
if(!empty($_POST['name']))
{
$name=strips教程lashes($_POST['name']);
}
else
{
$nam=NULL;
echo '<p><font color="red">You forgot to enter your name</font></p>';
}
if(isset($_POST['interests']))
{
$interests=true;
}
else
{
$interests=NULL;
echo '<p><font color="red">You forgot to enter your interests!</font></p>';
}
if($name && $interests)
{
echo "Thank you,<b>$name</b>,You entered your interests as:<ul>";
foreach($_POST['interests'] as $value)
{
echo "<li>$value</li>n";
}
echo '</ul>';
}
else
{
echo '<p><font color="red">Please go back and fill out the form again.</font></p>';
}
?>
</body>
数组和字符串
数组和字符串的转换:
$array=explode(separator,$string);
$string=implode(glue,$array);
分隔符(separator)、胶合(glue),当把一个数组转变成一个字符串时,将会设置胶合——将被插入到生成字符串中的数组值之间的字符和代码。当把字符串转变成数组时,要制定分隔符,它是描述生成数组中的不同元素之间的链接的代码。
eg:
$string1='Mon-Tue-Wed-Thur-Fri';
$days=explode('-',$string1);
$days有5个元素:0=>'Mon'…
$string2=implode(',',$days);
$string2现在是一个逗号分隔的一个星期中各天的列表:Mon,Tue…;
上例中arr.php中部分可以改为:
if(isset($_POST['interests']))
{
$interests=implode(',',$_POST['interests']);
}
然后可以将$interests作为字符串输出。
总结技巧:
join()函数时implode()函数的同义词
explode()函数第三个可选的参数是一个数字,用于限制将创建多少个数组元素。
数组排序
可以使用sort()按值对数组进行排序,但是它会丢弃原来的键。在排序过程之后,将会重置数组的键,因此,如果键--值关系很重要,最好不要用这个函数。
用asort()按值进行排序,会维持键。
可以使用ksort()按键对数组排序。
如果把上面三个函数分别改为rsort()、arsort()和krsort(),则能够以倒叙对数组排序。
eg:
//--------arrsort.php
<body>
<?php
$movies=array(10=>'Ca',9=>'To',2=>'THe',8=>'Sideways',7=>'Donnie');
echo '<p>In their original order:<br/><pre>Rating Title:<br/>';
foreach($movies as $key=>$value)
{
echo "$keyt$valuen";
}
echo '</pre></p>';
echo '<p>Sorted by title:<br/><pre>Rating Title:<br/>';
asort($movies); //按值对数组进行排序。
foreach($movies as $key=>$value)
{
echo "$keyt$valuen";
}
echo '</pre></p>';
echo '<p>Sorted by rating:<br/><pre>Rating Title:<br/>';
krsort($movies); //按键进行排序,并倒置数组位置。
foreach($movies as $key=>$value)
{
echo "$keyt$valuen";
}
echo '</pre></p>';
?>
</body>
密码我们都知道是有规则的是吧,可以是数字,大小字字母,以及下划级等,我们下面的主要是介绍长度为8的密码验证。<?php教程
//密码验证
$password = "zongzi_Abc_oo13a2";
$n = preg_match_all("/^[a-zA-Zd_]{8,}$/",$password,$array);
//长度是8或更多
var_dump($array);
?>
php教程 var_export 与 var_dump的分析区别
问题发现
在跟踪yratings_get_targets的时候,
error_log(var_export(yblog_mspconfiginit("ratings"),true));
老是打印出yblog_mspconfiginit(“ratings”)的返回是NULL
导致我以为是无法建立和DB的连接,走错路了一天。
最后才发现,这是var_export和var_dump的区别之一
这就是:
问题原因
var_export必须返回合法的php代码, 也就是说,var_export返回的代码,可以直接当作php代码赋值个一个变量。 而这个变量就会取得和被var_export一样的类型的值
但是, 当变量类型为resource的时候, 是无法简单copy复制的,所以, 当var_export的变量是resource类型时, var_export会返回NULL
实例
$res = yblog_mspconfiginit("ratings");
var_dump($res);
var_export($res);
结果:
resource(1) of type (yahoo_yblog)
NULL
再比如:
$res = fopen('status.html', 'r');
var_dump($res);
var_export($res);
结果:
resource(2) of type (stream)
NULL
DEDE软件下载模块中添加下载方式为迅雷下载联盟代码
修改 /plus/download.php教程 文件
查找
<?php
在它上面加入 Dede教程-598080707.NET
<script src="http://ps教程tatic.xunlei.com/js/webThunderDetect.js"></script>
在它下面加入
require("encode.inc");
查找
else if($open==1){
$link = base64_decode($link);
echo "<script language='网页特效'>location="$link";</script>";
exit();
替换为
else if($open==1){
$link = base64_decode($link);
$Url = ("http://asqq8.net/url".$link);
$thunderUrl = ThunderEncode($Url);
echo "<script>OnDownloadClick('".$thunderUrl."','',location.href,'你的联盟id',2,'')</script>";
exit();
}
把迅雷联盟的 encode.inc 文件 放到 plus 目录
php教程基础语法入门教程
输出语句:
echo()、print().
eg:
echo 'hello','world';
注释:
#、//、/* */
变量:
必须以$开头,区分大小写,第一个字符必须是字母或下划线。
链接字符串:
两个字符串之间用点(.)连接
常量:
全部使用大写字母来命名常量,常量不会像变量那样使用美元符号。
define('name','value');
PHP运行时利用了几个预定义的常量,包括PHP_VERSION和PHP_OS(服务器的操作系统)
创建一个新的日期常量:
define('TODAY','February 3,2005');
echo 'Today is'.TODAY;
单引号和双引号的区别:
在单引号的字符按照字面意义进行处理,而在双引号中的值则将被解释。
处理HTML表单
<form action="" method="">
action后指示将其页面提交到指定的页面。
接受表单数据的PHP页面将把用户输入到这个表单的中的内容赋予一个称谓&_REQUEST['name']的特殊变量。其中要使用全拼大写,因为PHP对变量名区分大小写。name用于表示要提交的表单中指定的变量名。
1.php
<body>
<form action="2.php" method="get">
<fieldset><legend>Enter your information in the form below:</legend>
<p><b>name:</b><input type="text" name="name" size="20" maxlength="40"/></p>
<p><b>E-mail:</b><input type="text" name="email" size="40" maxlength="60"/></p>
<p><b>Gender:</b><input type="radio" name="gender" value="M"/>Male<input type="radio" name="gender" value="F"/>Female</p>
<p><b>Age:</b>
<select name="age">
<option value="0-29">Under 30</option>
<option value="30-60">Between 30 and 60</option>
<option value="60+"Over 60></option>
</select></p>
<p><b>Comments:</b><textarea name="comments" rows="3" cols="40"></textarea></p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="Submit My Information"/></div>
</form>
</body>
运行如下:
2.php
当输入一些数据点submit时,会调用2.php:
<body>
<?php
$name=$_REQUEST['name'];
$email=$_REQUEST['email'];
$comments=$_REQUEST['comments'];
echo "<p>Thank you.<b>$name</b>.for the following comments:<br/><tt>$comments</tt></p>n";
?>
</body>
运行如下:
管理Magic Quotes(魔术引用):
对变量的值中的单引号和双引号进行转义。
如在上例中的comments中输入‘,则会显示'。
PHP中,有两类主要的Magic Quotes:magic_quotes_gpc,它适用于表单、URL和cookie数据(gpc代表get、post、cookie);magic_quotes_rentime,它适用于外部文件和数据库教程检索的数据。
如果在服务器上启用了Magic Quotes,则可以使用strips教程lashes()函数撤销它的作用。
$var=stripslashes($var);
这个函数将删除在$var中发现的任何反斜杠。在表单示例中,这具有把转义的提交字符串转变回其原来的未转义值的作用。
条件语句
If(isset($_REQUEST['gender']))
{
$gender=$_REQUEST['gender']
}
Else
{
$gender=NULL;
}
If($gender=='M')
{
...
}
验证表单数据
Isset()用于测试一个变量是否具有值(包括0、FALSE,或则一个空字符串,但不能是NULL)
但是使用此方法,若空字符串测试为TRUE,所以他不是验证HTML表单的文本输
入和文本框的有效方式。
empty()方法:
检查一个变量是否具有空值(empty):空字符串、0、NULL或FALSE。
eg:
if(!Empty(&_REQUEST['name']))
{
$name=stripslashes($_REQUEST['NAME'])
}
if($name)
{
…
}
要检测提交的值是否是数字,可使用is_numeric()函数。
可以使用strlen()函数来查看是否输入了0个以上的字符:
if(strlen($var)>0)
...
数组
数组可以构成一系列键-值对(key-value),其中每一对都是那个数组的一个项目或元素(element)。
PHP支持两种数组:索引数组(indexed array) 和联合数组(associative array),前者使用数字作为键,后者使用字符串作为键。索引数组的第一个索引开始于0,除非显示指定键。
数组遵守与任何其他变量相同的命名规则。
echo $ar[2];
echo $ar['MD']; --联合索引的键必须用单引号。
当数组使用字符串作为它的键时,输出格式为:
echo "{$array['IL']}";
当使用数字作为它的键时,输出格式为:
echo "$array[4]";
超全局数组:
$_GET、$_POST、$_SESSION、$_REQUEST、$_COOKIE等:
php使用$_GET来存储通过get方法发送到php脚本的所有变量和值。
$_POST存储使用post方法从HTML表单发送到php脚本的所有数据。
以及$_COOKIE,他们都是$_REQUEST的子集。
eg:
在前面的例子中,我们使用post获取所有元素,则可以直接用$_POST['name'],如:
$name=$_POST['name'];
创建数组:
1.一次向数组中添加一个元素:
$array[]="d";
$array['son']="BUJ";
2. 使用array()函数:
$arr=array('IA' => 'LH','MD' => 'MH');
不论是否显示地设置了键,都可以使用这个函数:
$arr=array('dd','asd');
如果设置了第一个具有数字键的值,则此后添加的值将具有递增的键:
$day=array(1=>'S','dd','ss') //$day[2]=dd,$day[3]=ss;
创建连续数字的数组,可以使用range()函数:
$ten=range(1,10);
访问数组:
foreach($array as $value)
{...}
foreach()循环将会迭代$array中的每个元素,并把每个元素的值赋予给$value变量。要访问键和值,可以使用:
foreach($array as $key=>value)
{
echo "The array value at $key is $value";
}
eg:
<form action="2.php" method="post">
<?php
$months=array(1=>'January','February','March');
$days=range(1,12);
$years=range(2000,2011);
echo '<select name="month">';
foreach($months as $key=>$value)
{
echo "<option value="$value">$value</option>n";
}
echo "</select>";
echo '<select name="days">';
foreach($days as $key=>$value)
{
echo "<option value="$value">$value</option>n";
}
echo "</select>";
echo '<select name="years">';
foreach($years as $key=>$value)
{
echo "<option value="$value">$value</option>n";
}
echo '</select>';
?>
要确定数组中的元素个数,可以使用count()或sizeof()函数:
$var =count($array);
从PHP4.1起,range()函数也可以创建连续字符的数组:
$var=range('a','z');
在foreach循环中不必使用名称$key和$value,但是,有些简写为$k和$v.
如果看到Invalid argument supplied for foreach()(为foreach()提供了无效的参数)出错消息,这意味
着你正尝试在不是数组的变量上使用foreach循环。
相关文章
- 在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
- 这篇文章主要介绍了C#中截取字符串的的基本方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-03
- 这篇文章介绍了C#判断字符串是否数字或字母的实例,有需要的朋友可以参考一下...2020-06-25
- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了PostgreSQL判断字符串是否包含目标字符串的多种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-23
- 这篇文章主要介绍了C++ string常用截取字符串方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-04-25
- 本文章提供在量的数据中级操作实例有如对键名比较计算数组的差集 计算差集 给指定数组中插入一个元素 反转数组 交集赋值新的数组实例。 //定义回调函数 funct...2016-11-25
- 本文实例讲述了php字符串按照单词进行反转的方法。分享给大家供大家参考。具体分析如下:下面的php代码可以将字符串按照单词进行反转输出,实际上是现将字符串按照空格分隔到数组,然后对数组进行反转输出。...2015-03-15
- 这篇文章主要介绍了C#二维数组基本用法,以实例形式分析了C#中二维数组的定义、初始化、遍历及打印等用法,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- Array数组在C#中同样是最基本的数据结构,下面为大家C#数组的常用操作方法小结,皆为细小的代码段,欢迎收看收藏...2020-06-25
- 下面一段代码给大家介绍php curl模拟post请求的示例代码,具体代码如下: <?php$uri = "http://www.cnblogs.com/test.php";//这里换成自己的服务器的地址// 参数数组$data = array ( 'name' => 'tanteng'// 'passwor...2015-11-24
- 这篇文章主要介绍了使用list stream:任意对象List拼接字符串操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-09
- 这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
- 这篇文章主要介绍了C# 16 进制字符串转 int的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 下面小编就为大家带来一篇C# 拷贝数组的几种方法(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
- JS中默认中文字符长度和其它字符长度计算方法是一样的,但某些情况下我们需要获取中文字符串的实际长度,代码如下: 复制代码 代码如下: function strLength(str) { var realLength = 0, len = str.length, charCode = -1;...2014-06-07
- 本文记录的要实现的功能类似于 MySQL 中的 ORDER BY,上个项目中有遇到这样的一个需求。 要求:从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。 遇到这个...2014-06-07
- 这篇文章主要介绍了C#实现字符串转换成字节数组的简单实现方法,仅一行代码即可搞定,非常简单实用,需要的朋友可以参考下...2020-06-25
- 文章介绍一个实用的函数,我们如果用php substr来截取字符在中文上处理的很有问题,今天自己写了一个比较好的中文与英文字符截取的函数,有需要的朋友可以参考下。 ...2016-11-25
- 这篇文章主要介绍了C#实现对字符串进行大小写切换的方法,涉及C#操作字符串的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25