就是快一个字
在迭代器才没有进行遍历【没有运行过$it->next();】的情况下,指针默认指向的是第一个元素,所以你不使指针归零【$it->rewind();】也可以从第一个开始迭代遍历。
视频中,未加$it->rewind(); 没有遍历出东西的原因是,这个迭代器$it 在之前还被foreach遍历过一次使得他的指针到了最后一位。
seek()只是在遍历的时候指针跳过第一个元素,元素本身还是存在的
Autoload01.php 看看这个文件,根据提示走
逻辑思维能力。
其实就是将原来需要处理数组的地方,用这些函数来处理,会提升代码效率.这些是php数组函数的背后基理.php语言将函数处理成spl形式,然后在处理,而你直接调用这些基理,就不用处理了.
IteratorIterator implements OuterIterator {
/* 方法 */
public __construct ( Traversable $iterator )
public mixed current ( void )
public Traversable getInnerIterator ( void )
public scalar key ( void )
public void next ( void )
public void rewind ( void )
public bool valid ( void )
}
IteratorIterator这个类的构造函数需要传入 Traversable类型的 参数。
OuterImpl extends IteratorIterator
找到你PHP安装的目录,里面有个php. exe文件。把它的路径贴到cmd窗口,然后 -f PHP文件(包括路径)就可以以命令行模式运行PHP文件了。(这种方法也叫cli模式)
而且还可以 php.exe路径 -a 进入交互式命令行模式。 -i 可以打印php info内容
老师直接用php -f 命令是 可能是因为他把php.exe的路径添加到环境变量,然后命名为PHP了。
如果你输入php.exe路径 -f 无效的话,可能是因为cmd进入时默认处于用户目录。
你可以尝试 输入cd / 进入根目录 再敲上面的命令
线性表的一种, 支持双向的扩展
老师是工程师 ,不是专职教师
因为你的代码没贴,所以个人猜想是文件名和类名不一致。 如果你的文件名是abc.php 的话,类名可以是大写的Abc,而不能是其他的字符串
你说的是某种数据结构吧,比如说双向链表 $obj = new splDoublyLinkedList(); //获取当前节点key值 $key = $obj->key(); $obj->offsetUnset($key); 你试试看 ,不过你要先把指针移到当前节点
没有,你可以自己尝试性的编写代码,主要理解其中的原理!
PATH_SEPARATOR:include多个路径使用,在windows下,当你要include多个路径的话,你要用”;”隔开,但在linux下就使用”:”隔开的
http://www.jb51.net/article/43074.htm
第一个问题:当你想多次遍历相同数组时你需要实例化ArrayObject,然后让这个实例创建一个ArrayIteratror实例 ,然后使用foreach或者 手动调用getIterator()方法
第二个问题:ArrayObject的getiterator也不是一个静态方法,这个你当ArrayObject::getiterator();这样使用的时候就会报错,错误:getiterator非静态方法数组对象
静态方法两种调用方式都可以的,静态方法是可以在类初始化之前就能调用
双向链表,可以理解成数组啊
堆和栈的区别可以用如下的比喻来看出:
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。
现在能看了
interface interface_name{
function fun1();
function fun2();
}
无函数体的函数声明
理论与实践相结合