当前位置:  编程技术>php
本页文章导读:
    ▪php中大括号作用介绍       一、不管什么程序,function name(){}, for(){}, ….太多了,不说也知道做什么用了。 二、$str{4}在字符串的变量的后面跟上{}刚大括号和中括号一样都是把某个字符串变量当成数组处理。 三、{$val.........
    ▪那些年一起学习的PHP(三)       一:PHP数据的输出 PHP支持的丰富的数据类型。后来在学习中会反复使用,有其他语言的学习知识,比较记忆更容易了解PHP的独到之处。下面先阐述一下PHP的输出。PHP向浏览器的基本输出方式.........
    ▪那些年一起学习的PHP(二)       现在我们进入Linux世界开始我们的PHP编码之旅,在编码中会有各种的问题发生,在解决问题的时间也是自己从新手蜕变的时刻。 每一门程序设计语言都会从变量开始练习开始,PHP是一类嵌入.........

[1]php中大括号作用介绍
    来源: 互联网  发布时间: 2013-11-30
一、不管什么程序,function name(){}, for(){}, ….太多了,不说也知道做什么用了。
二、$str{4}在字符串的变量的后面跟上{}刚大括号和中括号一样都是把某个字符串变量当成数组处理。
三、{$val}这时候大括号起的作用就是,告诉PHP,括起来的要当成变量处理。
代码如下:

$arr=array(0=>123, 'name'=>'你好');
foreach($array as $k=>$v){
echo "select * from blog_blogs where blog_tags like '%{$arr[$k]}%' order by blog_id"; //加一个大括号只是将作为变量的标志符
}
echo '<br/ ><br/ ><br/ ><br/ ><br/ ><br/ ><br/ >';
foreach($array as $k=>$v){
echo "select * from blog_blogs where blog_tags like '%{{$arr[$k]}}%' order by blog_id"; //加两个大括号,外层的将作为普通的字符
}
//用大括号来区分变量
//echo "$arr['name']"; //用此句会报语法错误
echo "{$arr['name']}"; //此句正常,大括号内的字符将作为变量来处理
//$str{4} 在字符串的变量的后面跟上{} 大括号和中括号一样都是把某个字符串变量当成数组处理
$str = 'abcdefg';
echo $str{4};


{}大括号在php中的作用(PHP变量放在大括号里面的含义)

如:$sql = "insert into article (`channel_id`,`title`,`detail`,`pub_time`) values ('{$cid}','{$title}','{$detail}','{$time}');";
不加似乎也可以,加{}是什么意思呢?
还有字段名 为什么要以``包括呢?

==============================================

至少便于阅读嘛~~~''是insert into语句要求的,因为字符串要成对出现嘛
加{}有时候是为了防止变量名和后面的字符串连在一起嘛
例如
{$cid}dd
如果cid=aa
那么{$cid}dd=aadd
不加的话你自己看看了$ciddd,岂不变成了ciddd变量了~~

PHP 变量后面加上一个大括号{},里面填上数字,就是指 PHP 变量相应序号的字符。
例如:
$str = 'hello';
echo $str{0}; // 输出为 h
echo $str{1}; // 输出为 e
如果要检查某个字符串是否满足多少长度,可以考虑用这种大括号(花括号)加 isset 的方式替代 strlen 函数,因为 isset 是语言结构,strlen 是函数,所以使用 isset 比使用 strlen 效率更高。
比如判断一个字符串的长度是否小于 5:
if ( !isset ( $str{5} ) ) 就比 if ( strlen ( $str ) < 5 ) 好。


下面几个比较能说明原因的解释是:

表示{}里面的是一个变量 ,执行时按照变量来处理 在字符串中引用变量使用的特殊包括方式,这样就可以不使用.运算符,从而减少代码的输入量了。

其实输出那块是等同于print "hello ".$arr['fruit'];

一、使用大括号的变量
前一篇日志提到了,PHP Notice警告的是下面一句:

switch (${action}.'_'.${child}) {
初看并没有什么问题。我也查询了PHP手册上关于变量的定义:这里。
1、可变变量的情况
可见,与大部分资料一样,变量使用大括号的情况,在于“可变变量”(Variable variables)。其中提到:


引用
In order to use variable variables with arrays, you have to resolve an ambiguity problem. That is, if you write $$a[1] then the parser needs to know if you meant to use $a[1] as a variable, or if you wanted $$a as the variable and then the [1] index from that variable. The syntax for resolving this ambiguity is: ${$a[1]} for the first case and ${$a}[1] for the second.
也就是说,为了在数组环境中也可以使用可变变量,因此,需要根据不同的情况,恰当的使用大括号{}限制变量的范围。${$a[1]} 与${$a}[1] 是完全不同的:


引用
${$a[1]} 这里$a[1]是一个变量;
${$a}[1] 这里$a是一个变量;
2、定界、避免歧义
实际上,这情况与可变变量时类似。例如,若使用“.”连接符,连接一个字符串,可能是这样:

echo $str.'_2010';
用大括号来写,可能更简单:

echo "${str}_2010";
可见,如果没有大括号,则可能把$str_2010整个作为一个变量来处理。当然,这样的写法,只能用在双引号中,单引号里面是不会执行变量替换的。

3、字符串变量中的单个字符
例如:
代码如下:

<?php
$str='000';
$str{0}='1';
echo $str; //输出为100
?>

这不难理解,与中括号[]的作用是一致的,有点类似Python中把字符串看成对象的情况。所以,下面的语句功能相同:
代码如下:

<?php
$str='000';
$str[0]='1';
echo $str; //也是输出100
?>

不过,这些都不是我想说明的内容,真正想描述的情况,请见下面。

二、变量使用大括号的异同
首先,把PHP的错误信息输出全部打开,即/etc/php.ini 为:


引用
error_reporting = E_ALL
display_errors = On
然后,打开测试页面,其中代码为:
代码如下:

<?php
$test='123';
echo $test;
echo "${test}";
echo "{$test}";
echo ${test}.'_';
echo ${test};
?>

你会看到如下的结果:


引用
123123123
Notice: Use of undefined constant test - assumed 'test' in /var/www/html/phpcrm/testpages/variables.php on line 6
123_
Notice: Use of undefined constant test - assumed 'test' in /var/www/html/phpcrm/testpages/variables.php on line 7
123
这说明什么?
1、可接受的写法
从输出结果中“123123123”,表明前面三行的echo语句都是正常的:
代码如下:

echo $test;
echo "${test}";
echo "{$test}";

2、不建议的写法
后面的两行都有Notice警告,也就是曾把test变量看成常量,只是后来才假设为变量来处理的。因此,为了避免歧义和冲突,不建议这样写:
代码如下:

echo ${test}.'_';
echo ${test};

不过,可以有一种变通的写法
代码如下:

echo ${'test'}.'_';
echo ${'test'};

这样写的话就不会报错了
3、不正确的写法
网上不少资料介绍,${var}与{$var}的作用是一样的。但是,如果你再加入一句:

echo {$test};
那么,你将会得到以下错误信息:


引用
Parse error: syntax error, unexpected '{' in /var/www/html/phpcrm/testpages/variables.php on line 8
这可不是Notice警告,是错误,因解析问题,程序将不能正常运行。

三、总结
结合前面两部分的内容,我相信,对于变量引用时使用大括号,应遵循以下原则:


引用
1、正确的写法为:${var} 的形式;
2、与双引号一同使用;
3、根据需表达的意思进行定界。
所以,最后我把switch一行改为:

switch ("${action}_${child}") {
即不再出现Notice警告。

    
[2]那些年一起学习的PHP(三)
    来源: 互联网  发布时间: 2013-11-30
一:PHP数据的输出

PHP支持的丰富的数据类型。后来在学习中会反复使用,有其他语言的学习知识,比较记忆更容易了解PHP的独到之处。下面先阐述一下PHP的输出。PHP向浏览器的基本输出方式有Echo(),Print(),printf(),sprintf()我们可以对比一下一上四种输出方式。

Function Echo() print() printf() sprintf() Return Void int:  ever return 1 int: string Express Echo(string argument) print(argument) printf(string format) printf(string format) Instruction 写入字符串即可 写入字符串,返回值是1,用来验证是否成功显示 支持输出格式字符串,格式参看下面讲述 同样格式字符串,但是不直接呈现浏览器
其实Echo()与print() 的区别是不太大的,使用哪一个完全取决于自己的喜好,后两者一样。什么叫格式化字符串输出呢?有C/C++语言时我们会明白这个意思,也就是输出时我们可以应该适当的格式化符号,让输出格式化。

二:PHP中使用到的格式化输出格式

这些格式化符号下表显示:
类型 描述 举例 %b 将参数认为是一个整数,显示其二进制数 printf(%d,10);=======>显示1010 %c 将参数认为是一个整数,显示其ASCII字符 printf(%c,65);======>显示A %d 将参数认为是一个整数,显示其十进制 printf(%d,10);=======>10 %f 将参数认为是一个浮点数,显示其浮点数 printf(%f,2);========>2.00000 %o 将参数认为是一个整数,显示其八进制 Printf(%o,8)============10 %s 将参数认为是一个字符串,显示其字符串 printf(%s,”this  is a TV ”)=====>this is a TV %u 将参数认为是一个整数,显示一个无符号十进制 printf(%u,-100)======>100 %x 将参数认为是一个整数,小写的十六进制 略 %X 将参数认为是一个整数,大写的 略三:PHP中变量声明的注意点
在php中变量的声明类似于shell脚本语言,变量都是以$符号开始的,我们要注意以下几点:
1):$总是在变量前面,变量是有效的标示符。
2):变量是严格区分大小写,例如$Book与$book是不一样的。
3):PHP变量不需要显示声明,刚好与C语言相反。
4):声明之后便可以为变量赋值,赋值分为按值赋值,引用赋值引用赋值是按堆栈地址赋值

四:PHP中变量的的作用域
按照作用域区分变量有局部变量,全局变量,静态变量,PHP还有独特的超级全局变量。局部变量只能在声明的作用域中使用,全局作用变量在整个生命周期中都可以使用。静态变量是声明使用Static 修饰符,在函数退出后static 变量仍然在内存中存在。例如
代码如下:

<?php
funtion keep()
{
static $count=0;
$count++;
echo $count;
echo "<br />";
}
10:
11: keep();//输出1
12: keep();//输出2
13: keep();//输出3
14: keep();//输出4
15:
16: //你可能以为输出的值全部是1,但是刚好确实是1234,这里正是static的使用效果
17: ?>

五:超级全局变量($_SERVER,$_GET,$_POST,$_COOKIE),$_FILES,$_ENV ,$_SESSION
再来看超级全局全局变量。PHP提供很多有用的预定义变量,可以再执行脚本的任意位置访问,用于提供大量与环境相关的信息,还可以获得当前用户会话(session),操作环境,本地环境等等。例如可以使用
代码如下:

foreach($_SERVER as $var => $value)
{
//遍历输出所有系统超级变量
echo "$var => $value <br />";
}

可以看到输出好多系统变量
HTTP_HOST
=>
Localhost
等等系统信息
我们就可以通过
$_SERVER[“HTTP_HOST”]
来获得这些全局变量。$_SERVER全局变量包含WEB服务器,客户配置,当前信息等可以通过查找文档使用。
另外还可以通过GET方法获取传递的变量。$_GET超级全局变量包含试用GET方法专递的参数的有关信息。例如请求的URL地址是http://www.baidu.com/index.html?cat=apache&id=145 ,就可以使用超级全局变量访问如下变量:$_GET[‘cat']=”apache”; $_GET[‘id']=”145” ,默认的情况下要访问通过GET方法传递的变量,$_GET 超级全局变量是唯一的访问途径,不能用$cat, $id的方式引用GET的变量,后续了解关于安全访问外部数据的章节会详细说明。
另外使用POST的方法也可以传递变量。
具体如下:$_POST超级全局变量包含用POST方法传递参数有关信息。
考虑如下的请求表单:
代码如下:

<form action="/blog_article/a.html" method="post">
<p/> Email-adress:<input type="text" name="email" size="20" maxlength="50" value="">
<p />Password:<br />
<input type="password" name="pswd" size="20" maxlength="15" value="">
<br/>
<input type="submit" name="submit" size="20" maxlength="50" value="LOGIN">
</form>

通过目标脚本a.php就可以使用下面这些POST变量:
$_POST[‘email']=”zyl0395@126.com”;
$_POST[‘pswd']=”Bestyear”;
我们还可以使用超级全局变量保存COOKIE信息,$_COOKIE保存了HTTPcookie中的所有传到脚本的信息,这些cookie一般由以前执行的PHP脚本通过PHP函数setcookie()设置的。例如:
代码如下:

<?php
$value = ' somewhere';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600); /* 一小时有效cookie */
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);
?>

这里看不懂无所谓的,后来还会专门研究cookie的知识。
$_FILES是通过POST向服务器上传文件使用的变量,$_files主要用在当需要上传二进制文件的地方,录入上传一个abc.mp3文件,则服务器端需要获得该文件的相关信息,则通过变量$_files来取得。 共有五个元素:
1):$_FILES['userfile']['name']
客户端机器文件的原名称。
2):$_FILES['userfile']['type']
文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。
3):$_FILES['userfile']['size']
已上传文件的大小,单位为字节。
4):$_FILES['userfile']['tmp_name']
文件被上传后在服务端储存的临时文件名。
5):$_FILES['userfile']['error']
和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。
$_EVN 是PhP服务器使用的有关信息, $_SESSION 获得会话的有关信息

六:PHP 常量定义使用
常量是程序中无法更改的量,非常有用如:圆周率
定义:define(”PI” ,3.1415926)
使用 echo PI;
七:关于PHP中的逻辑符号,运算等级,表达式,流程控制,逻辑等等不再介绍,基本和C++语言相符,这里只是简单写一下没有的部分。例如 Include 在PHP中的作用。
include在PHP中也是引入包含文件的句子,基本语法是include(/path/to/file)要引用/user/local/lib/php/wjgilmore/init.inc.php 则要这样:
代码如下:

<?php
include "/user/local/lib/php/wjgilmore/init.inc.php ";
?>

有个地方需要注意,就是
include在判断句中是,必须要用大括号{}界定
,否则会错误,这个要注意.,还可以通过include引用一个远程文件.如果文件所在的服务器支持PHP,通过传递必要的键值对(类似于GET请求的做法,所包含的变量也会得到解析)
例如:include “http://www.123.com/index.html?background=red”;
如果只引用一次,则用
include_once
,首先会检验是否引用了这个文件,如果没有则引用,如果有则不执行
include_once(),
确保一次。
同样的方法require是请求文件,同样是require_once请求一次。后续用到时间详细解释。

    
[3]那些年一起学习的PHP(二)
    来源: 互联网  发布时间: 2013-11-30
现在我们进入Linux世界开始我们的PHP编码之旅,在编码中会有各种的问题发生,在解决问题的时间也是自己从新手蜕变的时刻。
每一门程序设计语言都会从变量开始练习开始,PHP是一类嵌入式脚本语言,当然也可以从语法的数据类型开始。这一节主要从PHP的数据类型,数据变量入手学习。
PHP语言的数据类型:
(1)布尔值,【true,false】问:布尔值的定义只有两个:true,false,PHP定义变量同意用$ 表示,如$shop=false;
(2)整型 【十进制,八进制,十六进制】支持的整数与平台有关,对于PHP5以及以前的版本支持+2的31次方,PHP6引入63次方的整型数据.十进制,十六进制基本按照数学的只是进行转换。
(3)浮点型数据,包括单精浮点【float】,双精浮点【double】,实数【real number】,可以包含小数部分的数值,用来表示货币,距离,以及简单整数无法满足的其他表示,例如定义一个数$money=1.0093 默认是浮点类型的数值。
(4)单引号字符串,即用单引号把想使用的文本括起来。如:'I am Siron.'
问:如果我要写 This's book is highly enjoyable. 该怎么写呢?
PHP中关于单双引号的同时使用注意:
双引号字段会经过编译器解释,然后通过HTML代码输出。
单引号字段不会经过编译器解释,直接输出。
举例子:
代码如下:

<?php
$bookname="Lua编程指南中文版";
//双引号-----输出Lua编程指南中文版
echo “$bookname";
//单引号----输出$bookname
echo '$bookname';
//交叉输出举例子 ,注意那个单引号要转义 \'
echo “ My book\'s name is $bookname";
?>

(5)双引号字符串,即用双引号把想使用的文本括起来,但复杂些。双引号中可以使用变量替换。如:"I am Siron."
(6)数组类型 ,数组可以以键值对形式存在,支持多维数组。略略定义举例子
代码如下:

<?php
//定义一位数组,共含有三个元素
$books[0]="C#指南";
$books[1]="围城";
$books[2]="朝花夕拾";
?>


(7)对象类型 属于符合数据类型,后来面向对象编程中将详细介绍。
$
blengder =new Application;
(8)resource类型
$file=fopen("1.txt",r)//这是resource类型的
(9) PHP是弱类型语言吗?可以强制类型转换吗?
关于PHP的强制类型转换(即将一种数据类型转换为另一种类型),在变量前面加上强制转换的数据类型即可实现.但是要注意在转换过程中,高精度浮点数转化低精度数值时变量的数据丢失,因此一定谨慎使用.强制转换的类型有(bool)(array)(int)(integer)(object)(real)(double)(float)(string)。PHP 类型定义十分松散,所以有时会根据引用变量所处的环境系统自动转换为合适的类型。
代码如下:

<?php
$total=5; //整数
$count="25";//字符串
$total+="$count";//$total=30(自动转换为整数)
?>

(10) 与类型有关有什么内置函数使用的呢?
PHP内置使用gettype()函数返回Var指定的变量类型,使用settype()将var转换为Type指定的类型。即: gettype() 本函数用来取得变量的类型。返回的类型字符串可能为下列字符串其中之一:integer、double、string、array、object、unknown type。语法: string gettype(mixed var);
settype()本函数用来配置或转换变量类型。成功返回 true 值,其它情形返回 false 值。参数 var 为原来的变量名,参数 type 为下列的类型之一:integer、double、string、array 与 object。语法: int settype(string var, string type);

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
java开源软件 iis7站长之家
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3