概述
unset()
<?php $a="hello"; $b= &$a; unset($b); $b="world"; echo $a; A:hello B:world C:NULL D:unset
可以把“变量”看成一个容器,“变量名”相当于这个容器的标签!
unset相当于把这个标签名给撕了,但是只要这个盒子还有标签名贴着,那就不会被PHP的垃圾回收机制给回收掉!所以除非把所有标签给撕了,或者直接把容器里面的东西给拿出来,那么就成了空==>NULL了
多个变量指向同一个地址时,修改会同时改变多个变量的值,但删除其中一个变量 别的不受影响
mysql_num_fields ()返回结果集中字段的数目
strcmp ()— 二进制安全字符串比较 (ASCII )
<?php $str = “LAMP”; $str1 = “LAMPBrother”; $strc = strcmp($str,$str1); switch ($strc){ case 1: echo“str > str1”; break; case –1: echo“str < str1”; break; case 0: echo“str=str1”; break; default: echo“str <> str1”; } 正确答案: D str > str1 str < str1 str = str1 str <> str1
官方解释:
如果 str1
小于 str2
返回 < 0; 如果 str1
大于 str2
返回 > 0;如果两者相等,返回 0。
当str2时,返回0
当str2时,返回<0(注意,没有说返回-1)
当str2时,返回>0(注意,没有说返回1)
https://www.nowcoder.com/questionTerminal/60e159271e7c43f49643935dda5e1f1c
首先要理解strmp(,str2)函数的意思,比较两个字符串的大小,比较时计算了两个字符串相差(不同)字符的个数一起作为返回
情况如下:
1、$str1==str2 返回 0
2、$str1 > str2 返回 1
3、$str1 < str2 返回 -1
注意:对于第2、3种情况,上面列出的只是返回结果的符号而已,并不是最终的结果
最终返回结果是: 所返回的符号乘上两个字符串相比不相同的字符个数
对于本题来说, str1 = “LAMPBrother”;
两个字符串不相同的字符有7个,且 str2,返回符号为 -1
所以最终返回的结果为 -7 (-1 * 7)
switch 条件判断case语句都没有匹配的,跳到default:所以执行 echo“str <> str1”;
在两个字符串比较的时候,如果在每个字符串 ’ 前 ‘ 有一定数量相同的字符(并且其中一个字符串完全在另一个中整体出现:),则比较的结果就是两个字符串长度的差值,没有则只进行比较
__call()方法
在调用类中不存在或无权法问的方法是触发
数据操作语言
DML(data manipulation language): 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
DDL(data definition language): DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
DCL(Data Control Language): 是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL
mysqli
MySQL目前只有InnoDB和BDB两个数据表类型才支持事务
MySQL是以自动提交(autocommit)模式运行的,必须执行mysqli对象中的autocommit(0)方法关闭MySQL事务机制的自动提交模式 调用mysqli类对象的commit()方法提交事务 调用mysqli类对象的rollback()方法撤销事务
mysql中的affected_rows
在操作mysql语句时,有时需要通过affected_rows来判断语句执行的情况。
例如在事务操作中,就可以通过affected_rows来判断事务是否执行成功,以进一步执行事务的提交或者回滚操作。
对于SELECT操作,mysql_affected_rows()等价于mysql_num_rows(),即查询结果的行数,但是显示使用mysql_num_rows()更加合适。
因此mysql_affected_rows()一般用来在DELETE, INSERT , REPLACE , UPDATE语句执行完成之后判断数据表中变化的行数(如果数据表没有变化,则行数为0)。
-
DELETE语句执行成功,返回删除的行数,INSERT INTO TABLE VALUES 或者 INSERT INTO TABLES SET 都是返回插入成功的行数,这些是比较明确的。
-
UPDATE语句执行成功时,则有可能也为0。如果要更新的值与原来的值相同,则affected_rows为0;否则,为更新的行数。
-
INSERT INTO TABLE VALUES 或者 INSERT INTO TABLES SET 都是返回插入成功的行数,插入成功则返回1,否则返回0 。
-
INSERT INTO TABLE VALUES … ON DUPLICATE KEY UPDATE … 语句执行成功后,则会有3种情况,当不存在唯一索引冲突时,执行INSERT操作,affected_rows结果为1;当存在主键冲突时,执行UPDATE操作,如果要更新的值与原来的相同,则affected_rows为0,否则为2。
-
REPLACE INTO TABLE VALUES执行成功 ,如果没有存在唯一索引的冲突,则与INSERT操作没有什么区别affected_rows为1 ;如果存在主键冲突,则会DELETE再INSERT,所以affected_rows的值为2 。
INSERT INTO TABLE VALUES … ON DUPLICATE KEY UPDATE ,当存在唯一索引重复,并成功更新数据之后,受到影响的行数实际上是1,但是affected_rows的值为2。这个数值是mysql手册上规定的,个人猜测应该是因为该语句直接INSERT操作时的affected_rows是1,为了区分两种情况。
Notice: Undefined offset 的解决方法
调试程序的时候总是出现错误提示:
Notice: Undefined offset: 1 in xxx.php on line 48 Notice: Undefined offset: 2 in xxx.php on line 48
Notice: Undefined offset: 3 in xxx.php on line 48
Notice: Undefined offset: 4 in xxx.php on line 48
这问题很常出现在数组中的,程序是能正确地运行下去,但是在屏幕上总会出现这样的提示:Notice: Undefined offset: ….. 网上普遍是采用抑制其显示的方法,即更改php.ini文件中error_repoting的参数为”EALL & Notice “,这样屏幕就能正常显示了.
问题是解决了,但是总想不透offset:接下去的数字(如 Notice: Undefined offset: 4 ….)是什么意思.还有,句子里的语法明明是正确的,为什么会出现警告.冷静地思考了好几遍并尝试了每种可能,终于找到了答案.offset:接下去的数字是出错的数组下标,一般是超出了数组的取值范围,如定义了数组有个元数如果出现了A[10]就会出现错误(Notice: Undefined offset: 10 ….),因为数组的下标是从0开始的,所以这个数组的下标就只能是0~9.因此在出现这类问题时,不要急于用抑制显示的方法(更简单的可以在当前文件的最前面加上一句”error_reporting(填offset:接下去的那个数字);,一定要注意你所用的数组下标,仔细思考一下,问题一定会很快得到解决的 !也有可能是unset数组后再尝试读取其内容,php手册中有:
字符集编码问题
$str = "qimai东方红是老江湖"; echo strlen($str); echo '<br/>'; echo mb_strlen($str,'gbk'); //这时上面的strlen($str)输出26,因为utf-8中一个汉字站3个字符 //mb_strlen($str,'gbk')输出16 $str = "东方红是老江湖qimai"; echo strlen($str); echo '<br/>'; echo mb_strlen($str,'gbk'); //这时strlen($str)输出不变,mb_strlen($str,'gbk')输出15, $str = "东方红是qimai老江湖"; echo strlen($str); echo '<br/>'; echo mb_strlen($str,'gbk'); //这时strlen($str)输出不变,mb_strlen($str,'gbk')输出16, //因为字符串中英文出现的位置不同mb_strlen()函数的结果会受到影响, //这个影响只有在字符集是gbk的时候才会出现, //如果mb_strlen($str,'utf-8')中是utf-8字符编码则结果都是12
最后
以上就是奋斗发夹为你收集整理的php基础中个别需要注意的地方的全部内容,希望文章能够帮你解决php基础中个别需要注意的地方所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复