CodeSky 代码之空

随手记录自己的学习过程

归档时间:2014-01

PHP 语法糖一枚

2014-01-25 19:09分类: PHP评论: 0

又是刷题目刷到的,真是一个悲伤的故事。

1<?php
2$s = '12345 ';
3$s[$s[1]] = '234 ';
4echo $s;
5?>
6

输出是什么呢,很奇怪吧,明明不是数组。 其实在字符串中这么表示意思就是第n - 1个字符。 比如$s[1]截取的就是2,当然这里只接受length = 1的字符,而不接受字符串,所以第二步只是将3替换为了2,而没有把字符串替换进去。

*length = 1*代表 截取一个字节,所以对于中文不适用,关于中文的字节数,见PHP utf-8下strlen()小结

扩展阅读:http://www.php.net/manual/zh/language.types.string.php#language.types.string.substr

字符串原型大概指的是:$str = 'abc'[1] 差不多这个意思吧

阅读更多 →

PHP 使用foreach批量赋值误区

2014-01-25 18:42分类: PHP评论: 0

又是一道坑爹的题目,不得不说《细说PHP》很好的解决了各种误区问题啊……

这里稍微改一下,其实只是把字符串内容改了而已OTZ。

1	$array = array('sky', 'power');
2
3	foreach ($array as $key => $value) {
4		$array[$key] = 'ao';
5	}
6
7	print_r($array);
8

请问输出是什么?

直观的想想,$value变了的话数组的元素值不就应该改变了吗,但输出却是:Array ( [0] => sky [1] => power ),而我们把$value改为$array[$key],输出结果元素就全部替换为ao了,看来并不能这么替换,毕竟语法上赋值是后者。

阅读更多 →

表单input增强用户体验(label和placeholder)

2014-01-25 18:21分类: HTML评论: 0

placeholder好像是一个会用上瘾的属性,比如说本站的搜索框,请输入关键词用的就是placeholder,它比value要好用许多,当输入为空时出现,有输入时消失,value的用户体验就糟糕透了。

当然,这是HTML5的新属性,所以可能又会在IE6碰壁(大概) 扩展阅读:http://www.w3school.com.cn/html5/att_input_placeholder.asp

而label则把文字和input关联了起来,比如

1<label>保留文件名:<input type="checkbox" name="file_name" value="yes"></label>
2

那么即使是点击文字,也会选中checkbox,比起文字孤立来更好 具体应用于相对路径生成器

这里我用的是label的隐形写法,它还有显性写法,见扩展阅读。

扩展阅读:

  1. http://www.w3school.com.cn/tags/tag_label.asp HTML的label属性
  2. http://www.w3school.com.cn/html5/tag_label.asp HTML5中的label属性
阅读更多 →

PHP utf-8下strlen()小结

2014-01-24 14:58分类: PHP评论: 0

strlen()用于获取字符串长度,英文1字节好无悬念,而中文呢。

1<?php
2	$str = 'hello 你好世界';
3	echo strlen($str);
4?>
5

运行了一下这个结果是18很疑惑,为什么呢,一直以为中文就按2字节来计,结果看到:中文字占2-4字节 这样就明白了,在这里一个中文三个字节,剩下的以后再补充好了

扩展阅读http://php.net/strlen

阅读更多 →

PHP Call-time pass-by-reference has been removed 错误解决

2014-01-24 14:34分类: PHP评论: 0

依旧是做到题目的时候发现了这个问题,可能是PHP版本不同引发的问题,然后默默的搜索了一下。

按引用传参,其实只用在定义时指定"&"即可,调用时不用写,只不过一直以来都这么写也没报过错,看来是5.4版增强了检查,不允许这种调用了。 调用时去掉"&",只保留方法定义中的"&",这次一切OK了。

阅读更多 →

PHP in_array()函数设置

2014-01-24 12:24分类: PHP评论: 0

6.以下代码的执行后是,$result值为( B )。

1<?php
2	$a = "01";
3	$result = 1;
4	if(in_array($a,array("1"))){
5		$result = 2;
6	}else if($a == "1"){
7		$result = 3;
8	}else if($a == "01"){
9		$result = 4;
10	}else{
11		$result = 5;
12	}
13?>
14

A.1 B.2 C.3 D.4 E.5

阅读更多 →

PHP strcmp()比较字符串大小

2014-01-24 12:19分类: PHP评论: 0

题目如下: 2.以下程序运行结果为( D )。

1<?
2$str = "LAMP";
3$str1 = "LAMPBrother";
4$strc = strcmp($str, $str1);
5switch ($strc){
6	case 1:
7		echo "str > str1";
8		break;
9	case -1:
10		echo "str < str1";
11		break;
12	case 0:
13		echo "str = str1";
14		break;
15	default:
16		echo "str <> str1";
17}
18?>
19

A.str > str1 B.str < str1 C.str = str1 D.str <> str1

阅读更多 →

PHP 定界符的使用

2014-01-24 12:13分类: PHP评论: 1

题目如下:

17.下面的语句输出结果(A )。

1<?php
2	$foo = 'test';
3	$bar = <<<'EOT'
4		 $foo bar
5	EOT;
6	echo $bar;
7?>
8

A.$foo bar; B.'EOT' $foo bar EOT; C.test bar; D.'EOT' test bar EOT;

书上说定界符和双引号起到了一样的效果 注意事项: EOT所在行不能包括其他任何字符,尤其意味着该标识符不能被锁紧,而且唉结束标记与分号之前和之后都不能有任何空格和制表符。

但是为什么这个没有转换呢,似乎因为这是''引起来的,如果没有单引号或者改为双引号,就起到了双引号的作用。

当然,据说定位符很少使用。

阅读更多 →

PHP 逻辑运算符与位运算符

2014-01-24 12:03分类: PHP评论: 0

做到好多道这样的题……基本上没有考虑对过。

  1. 下面程序中$b的输出结果是( A )。
1<?php
2	$a=3;
3	$b=4;
4	if($a||$b=5){
5		echo 'todo';
6	}
7	echo $b;
8?>
9

A. todo4 B.5 C.3 D.false

这题之所以选A,在于运算到$a时已经是True了,逻辑运算符不会去运算后面的$b=5所以$b并未改变其值。

阅读更多 →

PHP implode()函数小解

2014-01-24 11:44分类: PHP评论: 0

昨天做到这样一道题目: 6.下面哪个表达式不能将两个字符串$s1和$s2串联成一个单独的字符串( )。 A.$s1+$s2 B."{$s1}{$s2}" C.$s1.$s2 D.implode('',array($s1,$s2))

implode()是什么样完全不知道,加上被其他语言的误导误以为A是可以的(其实是不行的,运算时会转换成数值)

PHP手册中,implode可以将一维数组转换成字符串,也就起到了粘合作用。 string implode ( string $glue , array $pieces ) $glue也就是连接符,用什么来连接,而后面则是选择一个数组

W3School中的例子:

1<?php
2$arr = array('Hello','World!','Beautiful','Day!');
3echo implode(" ",$arr);
4?>
5

结果是Hello World! Beautiful Day!

扩展阅读:

  1. http://www.php.net/implode
  2. http://www.w3school.com.cn/php/func_string_implode.asp
阅读更多 →
共 41 篇文章,5 页