+ -
当前位置:首页 → 问答吧 → [连载][Zend权威认证试题讲解]第一章-PHP编程基础

[连载][Zend权威认证试题讲解]第一章-PHP编程基础

时间:2008-02-15

来源:互联网

查看所有章节

你必须有一定的经验才能完成这套ZEND测试题。这并不意味着你必须是超级高手――很简单,为了通过这套测试,你只需在日常生活有足够的接触PHP的时间。
因此,了解自己对“基础”的掌握程度非常重要。尽管这些知识非常“底层”,但却是PHP永恒的基本元素。没有回答好本套测试其他章节的题目可能只是说明那些问题并不是你日常PHP编程中经常接触的部分;但如果在本章就做错大量的题目,你就要警惕了。总之,如果你基础薄弱,就会影响你对进阶知识的理解。

问题

1.    选择合适的答案填入空白处

PHP是一种______脚本语言,基于______引擎。PHP最常被用来开发动态的______内容,此外,它同样还可被用来生成______(以及其他)文档。

A.动态,PHP,数据库,HTML
B.嵌入式,Zend,HTML,XML
C.基于Perl的,PHP,Web,静态
D.嵌入式,Zend,Docbook文档,MySQL
E.基于Zend的,PHP,图像,HTML


2.以下哪种标签不是PHP起始/结束符?

A.<% %>
B.<? ?>
C.<?= ?>
D.<! !>
E.<?php ?>


3.以下代码哪个不符合PHP语法?

A.$_10
B.${“MyVar”}
C.&$something
D.$10_somethings
E.$aVaR


4.运行以下代码将显示什么?
复制PHP内容到剪贴板
PHP代码:

<?php
define(myvalue, "10");
$myarray[10] = "Dog";
$myarray[] = "Human";
$myarray['myvalue'] = "Cat";
$myarray["Dog"] = "Cat";
print "The value is: ";
print $myarray[myvalue]."\n";
?>

A.The Value is: Dog
B.The Value is: Cat
C.The Value is: Human
D.The Value is: 10
E.Dog


5. print()和echo()有什么区别?

A.print()能作为表达式的一部分,echo()不能
B.echo()能作为表达式的一部分,print()不能
C.echo()能在CLI(命令行)版本的PHP中使用,print()不能
D.print()能在CLI(命令行)版本的PHP中使用,echo()不能
E.没有区别:两个函数都打印文本!


6.以下脚本输出什么?
复制PHP内容到剪贴板
PHP代码:

<?php
$a = 10;
$b = 20;
$c = 4;
$d = 8;
$e = 1.0;
$f = $c + $d * 2;
$g = $f % 20;
$h = $b - $a + $c + 2;
$i = $h << $c;
$j = $i * $e;
print $j;
?>

A.128
B.42
C.242.0
D.256
E.342

7.如何给变量$a,$b和$c赋值才能使以下脚本显示字符串“Hello, World!”?
复制PHP内容到剪贴板
PHP代码:

<?php
$string = "Hello, World!";
$a = ?;
$b = ?;
$c = ?;
if($a) {
        if($b && !$c) {
        echo "Goodbye Cruel World!";
        } else if(!$b && !$c) {
        echo "Nothing here";
        }

else {
    if(!$b) {
        if(!$a && (!$b && $c)) {
            echo "Hello, World!";
        } else {
            echo "Goodbye World!";
        }
        } else {
            echo "Not quite.";
        }
}
?>

A.False, True, False
B.True, True, False
C.False, True, True
D.False, False, True
E.True, True, True


8.以下脚本输出什么?
复制PHP内容到剪贴板
PHP代码:

<?php
$array = '0123456789ABCDEFG';
$s = '';
for ($i = 1; $i < 50; $i++) {
        $s .= $array[rand(0,strlen ($array) - 1)];
}
echo $s;
?>

A.50个随机字符组成的字符串
B.49个相同字符组成的字符串,因为没有初始化随机数生成器
C.49个随机字符组成的字符串
D.什么都没有,因为$array不是数组
E.49个字母‘G’组成的字符串


9.哪种语句结构用来表现以下条件判断最合适?
复制PHP内容到剪贴板
PHP代码:

<?php
if($a == 'a') {
        somefunction();
} else if ($a == 'b') {
        anotherfunction();
} else if ($a == 'c') {
        dosomething();
} else {
        donothing();
}
?>

A.没有default的switch语句
B.一个递归函数
C.while语句
D.无法用别的形式表现该逻辑
E.有default的switch语句


10.要修改每个元素的值,如何遍历$myarray数组最合适?
复制PHP内容到剪贴板
PHP代码:

<?php
$myarray = array ("My String","Another String","Hi, Mom!");
?>

A.用for循环
B.用foreach循环
C.用while循环
D.用do…while循环
E.办不到!


11.考虑如下代码片段:
复制PHP内容到剪贴板
PHP代码:

<?php
define("STOP_AT", 1024);
$result = array();
/* 在此处填入代码 */
{
        $result[] = $idx;
}
print_r($result);
?>

标记处填入什么代码才能产生如下数组输出?

Array
{
[0] => 1
[1] => 2
[2] => 4
[3] => 8
[4] => 16
[5] => 32
[6] => 64
[7] => 128
[8] => 256
[9] => 512
}

A.foreach($result as $key => $val)
B.while($idx *= 2)
C.for($idx = 1; $idx < STOP_AT; $idx *= 2)
D.for($idx *= 2; STOP_AT >= $idx; $idx = 0)
E.while($idx < STOP_AT) do $idx *= 2


12.为用户定义函数is_leap()选择一个合适的函数声明。is_leap使用2000作为默认年份。
复制PHP内容到剪贴板
PHP代码:

<?php
/* 函数声明处 */
{
        $is_leap = (!($year %4) && (($year % 100) ||
        !($year % 400)));
        return $is_leap;
}
var_dump(is_leap(1987)); /* Displays false */
var_dump(is_leap()); /* Displays true */
?>

A.function is_leap($year = 2000)
B.is_leap($year default 2000)
C.function is_leap($year default 2000)
D.function is_leap($year)
E.function is_leap(2000 = $year)


13.运行以下代码将显示什么值?假设代码运行时的URL是:testscript.php?c=25
复制PHP内容到剪贴板
PHP代码:

<?php
function process($c, $d = 25)
{
        global $e;
        $retval = $c + $d - $_GET['c'] - $e;
        return $retval;
}
$e = 10;
echo process(5);
?>

A.25
B.-5
C.10
D.5
E.0


14.考虑如下代码:
复制PHP内容到剪贴板
PHP代码:

<?php
function myfunction($a, $b = true)
{
        if($a && !$b) {
            echo "Hello, World!\n";
        }
}
$s = array(0 => "my",
1 => "call",
2 => '$function',
3 => ' ',
4 => "function",
5 => '$a',
6 => '$b',
7 => 'a',
8 => 'b',
9 => '');
$a = true;
$b = false;
/* Group A */
$name = $s[?].$s[?].$s[?].$s[?].$s[?].$s[?];
/* Group B */
$name(${$s[?]}, ${$s[?]});
?>

脚本中的每个问号(?)代表$s数组的一个数字索引。要想代码执行时显示Hello, World!字符串,该如何选择数字索引?
A.Group A: 4,3,0,4,9,9 Group B: 7,8
B.Group A: 1,3,0,4,9,9 Group B: 7,6
C.Group A: 1,3,2,3,0,4 Group B: 5,8
D.Group A: 0,4,9,9,9,9 Group B: 7,8
E.Group A: 4,3,0,4,9,9 Group B: 7,8


15.运行时(run-time)包含一个PHP脚本使用______,而编译时(compile-time)包含一个PHP脚本使用______。

A.include_once, include
B.require, include
C.require_once, include
D.include, require
E.以上皆可


16.什么情况下声明函数时不能给参数赋默认值?

A.当参数是布尔值时
B.当函数是类中的成员时
C.当参数是通过引用传递时
D.当函数只有一个参数时
E.永远不会


17.______操作符在两个操作数中有一个(不是全部)为True时返回True。

    答案:____________


18.全等运算符===如何比较两个值?

A.把它们转换成相同的数据类型再比较转换后的值
B.只在两者的数据类型和值都相同时才返回True
C.如果两个值是字符串,则进行词汇比较
D.基于strcmp函数进行比较
E.把两个值都转换成字符串再比较


19.以下哪个选项是把整型变量$a的值乘以4?(双选)

A.$a *= pow (2, 2);
B.$a >>= 2;
C.$a <<= 2;
D.$a += $a + $a;
E.一个都不对


20.一段脚本如何才算彻底终止?

A.当调用exit()时
B.当执行到文件结尾时
C.当PHP崩溃时
D.当Apache由于系统故障而终止时


答案速查
1.B
2.D
3.D
4.A
5.A
6.D
7.D
8.C
9.E
10.A
11.C
12.A
13.B
14.D
15.E
16.C
17.xor
18.B
19.AC
20.A


答案详解

1.唯一有意义的答案是B。PHP是一种基于Zend引擎的脚本语言,它通常被嵌入在HTML代码中。它主要被用来开发HTML文档,但是也可以用它来开发其他类型的文档,比如XML。

2.PHP编程中,人们不太使用<% %>和<? ?>两个标签,但它们确实是合法的PHP界定符。<! !>标签是非法的,因此正确的答案是D。记住,根据php.ini文件中的配置不同,这当中的某些标签无法在特定的情况下使用。

3.PHP变量以一个美元符号为开头,后面跟上任意数量的数字、字母和下划线。${“MyVar”}是一个合法的变量名,它使用的是较松散的命名约定。&$something是对$something的引用。然而,变量名不能以数字为开头,$10_somethings是非法的,因此答案是D。

4.注意,$myarray的键值并没有打上引号。所以,正在访问的键不是myvalue字符串,而是常量myvalue的值。最终访问的是$myarray[10],值是Dog,答案是A。

5.尽管print()和echo()在绝大多数情况下可以互换使用,但它们之间还是有一处不同。print()是函数,有返回值;echo()实际上是一个语言结构,没有返回值,并且不能在表达式中使用。因此,答案是A。

6.%运算符表示取模,它返回两个操作数相除的余数。<<是左移运算符,相当于乘以2的N次方。最后的答案乘以了一个浮点数,改变了它的数据类型。但是,由于小数点后是零,因此输出的结果不包含小数部分。答案是256(D)。

7.根据条件式的逻辑,要想得到Hello, World!字符串,必须要在第一个if结构中满足else的条件。因此$a必须为False,然后$b也必须为False。最内层的条件语句的实现要求先前的两个变量($a和$b)是False,而$c必须是True(答案是D)。

8.正确答案是C。从PHP4.2.0开始,除非已经给定了一个伪随机整数列,否则不再需要用srand()函数初始化随机数生成器。此外,即使随机数生成器没有被事先播种,脚本仍然会生成49个伪随机字符。尽管$array变量是字符串,但可以用访问数组的方式进行访问――使用数字索引访问某个位置上的字符。最后,for循环将从1开始执行到50,也就是执行了49次。

9.用一系列的if…else语句来检查一个条件的代码块,最适合用switch语句来替代。
复制PHP内容到剪贴板
PHP代码:

<?php
switch($a) {
    case 'a':
        somefunction();
        break;
    case 'b':
        anotherfunction();
        break;
    case 'c':
        dosomething();
        break;
    default:
        donothing();
}
?>

因为if语句中有一个捕捉所有其他条件的else,对应的,switch代码块需要一个default。正确答案是E。

10.通常情况下,foreach语句是遍历数组的首选。但是,由于foreach语句是在数组的副本上进行操作,而我们需要给数组中每个元素重新赋值,所以在这里foreach就不适用了。尽管也可以用while循环和do…while循环,但由于数组是顺序索引的,最合适的语句还是for语句。因此答案是A。
复制PHP内容到剪贴板
PHP代码:

<?php
$myarray = array ("My String", "Another String", "Hi, Mom!");
for($i = 0; $i < count($myarray); $i++)
{
    $myarray[$i] .= " ($i)";
}
?>

11.由于题目只允许填写一行代码,唯一合适的是for循环,因此答案只能是C或者D。要选出能生成正确结果的for循环,我们必须先复习一下for循环的构成要素。PHP中,for循环是这样声明的:
for(<初始化>;<继续执行,直到>;<重复执行>)
<初始化>在循环开始时执行一次,然后for循环开始执行大括号内的代码,直到<继续执行,直到>的值为False。每完成一次循环,执行一次<重复执行>。因此,正确的代码块应该是:
for ($idx = 1; $idx < STOP_AT; $idx *= 2)
答案是C。

12.5个选项中,只有两个是合法的PHP函数声明(A和D)。在这两个选项中,只有一个设置了参数的默认值――答案是A。

13.本题考察PHP中变量作用域的相关知识。你必须明确global关键字是如何将变量引入本地域的,以及$_GET、$_POST、$_COOKIE、$_REQUEST等超级全局变量的作用域。本题中,最终的数学表达式是5+25-25-10,等于-5,答案是B。

14.函数能被以一个包含着函数名的变量后面加上括号(以及必要的参数)的形式动态调用。对于Group A来说,合适的索引组合是0,4,9,9,9,9,产生字符串myfunction。另一方面,参数将使用${}结构的可变变量。对Group B来说,合适的索引应该是7和8,等于${‘a’}$和{‘b’}――即$a和$b。因此答案是D。

15.在较新版本的PHP中,require(或requier_once())和include()(或include_once())只有一个区别――如果包含的文件不存在,前者将产生一个致命错误,同时终止脚本的执行;而后者只会产生一个警告。因此答案E正确。

16.当参数被声明为通过引用传递时,你不能给它赋默认值,此时解释器期望获得一个能在函数内部进行修改的变量。答案是C。

17.正确答案是逻辑异或(xor)运算符。

18.全等运算符比较两个操作数的数据类型和值,两者中有一个不同,都会返回False。因此答案是B。

19.答案是A和C。A选项中,pow函数计算2的平方,答案是4。C选项中,左移运算符将$a的值左移两位,相当于乘以4。

20.答案是A。一段脚本并不会在执行到文件末尾时终止,所以当前文件才能被其他脚本包含。至于PHP和Apache崩溃,这两个说法就太恶搞了。

[ 本帖最后由 Ven 于 2008-2-15 00:45 编辑 ]

作者: Ven   发布时间: 2008-02-15

尽管PHP4的OOP性能不强,但它还是能够被用来构建可行的面向对象的代码结构――只要你知道对象模型的缺陷,并且小心的处理它们。

PHP5在对象的处理方面做了很多改变,你或许会因此更倾向于完全忽略PHP4。但事实上,许多用OOP的程序员从很早以前就开始用老版本的PHP编写软件了。所以,大量的OOP代码早已存在,甚至在人们跳到PHP5上进行开发之前。

本章不仅考察你对面向对象知识的总体掌握,还包括对PHP4特有的OOP实现机制的认识。

预定于2008年2月23日更新。

[ 本帖最后由 Ven 于 2008-2-15 16:52 编辑 ]

作者: 逆雪寒   发布时间: 2008-02-15

好东西呀,学习了,
做完错了不少....

作者: Ven   发布时间: 2008-02-15

作者: renwl   发布时间: 2008-02-15

感动

作者: 小星   发布时间: 2008-02-15

作者: linvo   发布时间: 2008-02-15

谢谢LZ

作者: strongability   发布时间: 2008-02-15

作者: feng123   发布时间: 2008-02-15

有新意!!

作者: kinomn   发布时间: 2008-02-15

先谢谢LZ的劳动, 为广大新手造福.


质疑第10题, foreach是对数组元素副本进行操作, 但是就这么判定for在这种情况下最合适有点牵强吧?
for...
复制PHP内容到剪贴板
PHP代码:

<?php
$myarray = array ("My String", "Another String", "Hi, Mom!");
for($i = 0; $i < count($myarray); $i++)
{
    $myarray[$i] .= " ($i)";
}
?>

foreach...
复制PHP内容到剪贴板
PHP代码:

<?php
$myarray = array ("My String", "Another String", "Hi, Mom!");
$i = 0;
foreach ($myarray as $k->$v) {
    $myarray[$k] = $i;
    $i++;
}

[ 本帖最后由 zwws 于 2008-2-16 01:33 编辑 ]

作者: luzhou   发布时间: 2008-02-16

非常感谢!测试完毕!

打了57.5分,还没及格!寒。。。

作者: zwws   发布时间: 2008-02-16

作者: 奇将射天狼   发布时间: 2008-02-16

我是这样想的:
foreach比for多一步额外的操作――复制数组元素,因此效率自然不如for。
而for循环体内只有1行代码,foreach时却有2行(加上循环之前初始化$i的那行,总共比for多出了2行),从代码的简洁上看也是for获胜(这也同样是for打败while和do...while的原因)。

作者: luzhou   发布时间: 2008-02-16

但是在赋值递增序列只能这样...

实际运用就不会有这种情况吧?
例如转义$_GET数组内各个元素...

BTW: 我没死脑筋吧?

作者: Ven   发布时间: 2008-02-16

题目里给的就是一个索引数组,你想得已经超出题目要求了。

[ 本帖最后由 Ven 于 2008-2-16 12:52 编辑 ]

作者: zwws   发布时间: 2008-02-16

高手就不要来凑热闹了撒~~~

作者: Ven   发布时间: 2008-02-16

呵呵 不好意思.

作者: fising   发布时间: 2008-02-16

日,错3道

作者: zwws   发布时间: 2008-02-17

21世纪大学生 讲文明 树新风

作者: linvo   发布时间: 2008-02-17

收藏了

作者: zwws   发布时间: 2008-02-17

yeah

作者: naodai   发布时间: 2008-02-17

作者: linvo   发布时间: 2008-02-17

不错,是个查缺补漏的好机会,期待第二章。楼主辛苦了

作者: luzhou   发布时间: 2008-02-19

做错4题,漏选1题,粗心看错选项又1题,得70分

作者: sonyhhhhh   发布时间: 2008-02-19

。。。。。。。。
错了两道半啊。
第六、十、十九(选对了一个A)。
很好,很强大。
从几个做错的题目确实能够反映出在“<<”类似操作上的弱项。哈哈

作者: shimch   发布时间: 2008-02-19

3Q3Q

作者: enze   发布时间: 2008-02-19

好东西,就不能让他沉底!!顶去起来!!!

作者: php?   发布时间: 2008-02-21

错了四道题,每题多少分,不是都一样吧?

作者: netstudy   发布时间: 2008-02-29

引用:
原帖由 Ven 于 2008-2-16 11:18 发表
我是这样想的:
foreach比for多一步额外的操作――复制数组元素,因此效率自然不如for。
而for循环体内只有1行代码,foreach时却有2行(加上循环之前初始化$i的那行,总共比for多出了2行),从代码的简洁上看也是f ...
引用:
原帖由 Ven 于 2008-2-16 12:43 发表
题目里给的就是一个索引数组,你想得已经超出题目要求了。
第十题我也是选的 foreach,所以认真的看了楼主和 10 楼的对话。
如果按照题意只需要改变内容那用 foreach 不需要用 $i 记数的,随便写个什么改变一下数组元素的值就可以了。
复制PHP内容到剪贴板
PHP代码:

<?php
$myarray = array ("My String", "Another String", "Hi, Mom!");
foreach ($myarray as $k => $v) {
    $myarray[$k] = 1;
}
?>

唯一有可能用 for 而不用 foreach 的原因可能是楼主说的
引用:
原帖由 Ven 于 2008-2-16 11:18 发表
我是这样想的:
foreach比for多一步额外的操作――复制数组元素,因此效率自然不如for。 ...
其他理由不充分,这种说法我在网上看到别人也提过,但是还有人提这个的同时也说 foreach 的效率要比 for 高,不知楼主有没有这方面的资料,谢谢。

我实际测试了一下,如果这两段出现在同一个 php 文件中,在前面的耗时长一些,但是相对来说还是 foreach 独立运行时比 for 独立运行时耗时少。
我的测试代码如下:
复制PHP内容到剪贴板
PHP代码:

<?
/* global function ----------------------------------------------------*/
function microtime_float() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
/* foreach  ----------------------------------------------------*/
$myarray1 = array ("My String", "Another String", "Hi, Mom!");
$timestart1 = microtime_float();
foreach($myarray1 as $k => $v) {
    $myarray1[$k] .= 1;
}
$timeend1 = microtime_float();
echo "\nforeach: ", $timeend1 , ' - ' , $timestart1, ' = ', $timeend1 - $timestart1;
/* --------------------------------------------------------------------*/
?>

复制PHP内容到剪贴板
PHP代码:

<?
/* global function ----------------------------------------------------*/
function microtime_float() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
/* for  ----------------------------------------------------*/
$myarray2 = array ("My String", "Another String", "Hi, Mom!");
$timestart2 = microtime_float();
for($i = 0; $i < count($myarray2); $i ++) {
    $myarray2[$i] .= 1;
}
$timeend2 = microtime_float();
echo "\nfor: ", $timeend2 , ' - ' , $timestart2, ' = ', $timeend2 - $timestart2;
/* --------------------------------------------------------------------*/
?>

比较后可以确认还是 foreach 效率比 for 高。

[ 本帖最后由 ☆侠客☆ 于 2008-2-29 15:34 编辑 ]

作者: ☆侠客☆   发布时间: 2008-02-29

LS ... 你之所以会得到 foreach 效率更高的结论 ...

只是因为你把 count 语句写在了 for 循环的条件里面 ...

导致每循环一次都要重新计算一次数组大小 ... 这样是不公平的哦 ...

附上我的比较代码 ...  用到了 eval 所以得出来的运行时间并不精确 ...

仅适用于比较两个执行时间的长短 ...
复制PHP内容到剪贴板
PHP代码:

<?php
$for = array(
    'name'            =>        'for',
    'before'        =>        '$myarray2 = array ("My String", "Another String", "Hi, Mom!"); $sizeof = count($myarray2);',
    'body'            =>        'for($i = 0; $i < $sizeof; $i ++) { $myarray2[$i] .= 1; }',
    'after'            =>        false,
      );

$foreach = array(
    'name'            =>        'foreach',
    'before'        =>        '$myarray1 = array ("My String", "Another String", "Hi, Mom!");',
    'body'            =>        'foreach( $myarray1 as $key => $value ) { $myarray1[$key] .= 1; }',
    'after'            =>        false,
      );

Tester::$loops = 1000;

Tester::Start( $foreach );
Tester::Start( $for );



class Tester {

    static private $start_at;
    static public   $loops;

    static private function Ticker( $name) {
        $mtime = explode ( ' ', microtime() );
        if ( ! self::$start_at ) self::$start_at = $mtime[1] + $mtime[0];
        else {
            $total = $mtime[1] + $mtime[0] - self::$start_at;
            echo '[ ', $name, ' : ', round($total , 5 ), ' sec. ]';
            self::$start_at = '';
        }
        return;
    }

    static public function Start( $parameter ) {
        $execution = $parameter['body'];
        $_loops = self::$loops;

        eval( $parameter['before'] );
        self::Ticker( '' );

        for ( $_loop = 0; $_loop < $_loops; $_loop++ )
            eval( $parameter['body'] );

        self::Ticker( $parameter['name'] );

        eval( $parameter['after'] );

    }

}

?>

作者: ☆侠客☆   发布时间: 2008-02-29

嗯,执行 1000 次应该比我执行 1 次要准确多了,执行了你的代码并且逐渐加大了执行次数,发现在 1000 次时,执行初期 foreach 比 for 要快([ foreach : 0.01971 sec. ][ for : 0.02153 sec. ]),但是随着执行次数增加及循环次数加大,两者差异越来越大([ foreach : 5.51162 sec. ][ for : 2.07695 sec. ]), 不过我稍微调整了一下执行的语句,把($myarray1[$key] .= 1;)换成了($myarray1[$key] = 1;),把 .= 换成 = 差别是很大的,执行多次循环时这个 .= 使 foreach 要执行的操作越来越耗资源,改成 = 之后执行了几次程序,发现还是 foreach 比 for 快的次数多([ foreach : 1.81436 sec. ][ for : 1.85529 sec. ])。
这段代码让我知道了区分在一些情况下应该用 for 还是 foreach ,thanks。

[ 本帖最后由 ☆侠客☆ 于 2008-3-1 16:22 编辑 ]

作者: Sunyanzi   发布时间: 2008-03-01

<?php
$myarray = array ("My String", "Another String", "Hi, Mom!");
$i = 0;
foreach ($myarray as $key) {
    $myarray[$key] = $i;
    $i++;
}
?>

作者: ☆侠客☆   发布时间: 2008-03-17

65分

作者: tanghez123   发布时间: 2008-03-20

我也对第10题感到质疑,不过我是个php菜鸟,说错了大家不要笑啊,呵呵,我是这样写的:
复制PHP内容到剪贴板
PHP代码:

<?php
$myarray = array ("My String","Another String","Hi, Mom!");

foreach($myarray as &$value)
{
        $value .= "***";
}

print_r($myarray);
?>

[ 本帖最后由 ecchanger 于 2008-4-2 20:15 编辑 ]

作者: lucas1860   发布时间: 2008-04-02

雷锋

作者: ecchanger   发布时间: 2008-04-16

看到第一题就头痛,本人最痛恨的题目就是这种类型的。填什么不行啊?非得和出题的那个家伙要想的一样。

[ 本帖最后由 wangyi6854 于 2008-4-19 10:15 编辑 ]

作者: tran99   发布时间: 2008-04-19

错了八道题,我是不是该把手册从头学了





薯年美食总动员

作者: wangyi6854   发布时间: 2008-04-28

谢谢楼主,对照答案又学习了一遍,发现自己有很多东西的概念特别模糊,这下就清晰多了,

作者: jingangel   发布时间: 2008-04-29

引用:
原帖由 wangyi6854 于 2008-4-19 10:14 发表
看到第一题就头痛,本人最痛恨的题目就是这种类型的。填什么不行啊?非得和出题的那个家伙要想的一样。
这题应该对照答案用排除法

作者: jingangel   发布时间: 2008-04-29

都是准的吗?我对有些东西有点疑问。但是真得很好,很多都不是很了解。谢谢了。

作者: Ven   发布时间: 2008-04-29

有疑问可以提出来,大家探讨探讨

作者: libaiyi   发布时间: 2008-04-30

楼主的第十题做的却是有点问题。
复制内容到剪贴板
代码:
<?php
$myarray = array ("My String", "Another String", "Hi, Mom!");
for(reset($myarray);$key=key($myarray);next($myarray))
{
    $myarray[$key] .= " ($key)";
}
?>
我也觉得用for比较合适,但是我会这么写,或者按照楼主的那个方式,但是要把count提取出来
[ 本帖最后由 fhjr999 于 2008-4-30 11:57 编辑 ]

作者: Ven   发布时间: 2008-04-30

引用:
原帖由 ☆侠客☆ 于 2008-3-1 16:18 发表
嗯,执行 1000 次应该比我执行 1 次要准确多了,执行了你的代码并且逐渐加大了执行次数,发现在 1000 次时,执行初期 foreach 比 for 要快([ foreach : 0.01971 sec. ][ for : 0.02153 sec. ]),但是随着执行次数增 ...
foreach循环小数组的时候,也许会快一些,但是在执行一些个头比较大,值比较大的时候,那肯定就比较慢了。
复制内容到剪贴板
代码:
foreach($array as $key => $value)
foreach会不停的给$key和$value赋新值,而使用while循环一维数组的时候,仅仅需要引入一个小小的变量,使用for(reset($array);$key=key($array);next($array))也只需要对索引进行循环负值。
而事实情况是,往往需要用到很多的大数组来进行数据存储。

作者: fhjr999   发布时间: 2008-04-30