栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP遍历数组的三种方式

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP遍历数组的三种方式

"; // 当前元素是 Bill
echo next($people) . "
"; // Bill 的下一个元素是 Steve echo current($people) . "
"; // 现在当前元素是 Steve echo prev($people) . "
"; // Steve 的上一个元素是 Bill echo end($people) . "
"; // 最后一个元素是 David echo prev($people) . "
"; // David 之前的元素是 Mark echo current($people) . "
"; // 目前的当前元素是 Mark echo reset($people) . "
"; // 把内部指针移动到数组的首个元素,即 Bill echo next($people) . "
"; // Bill 的下一个元素是 Steve print_r (each($people)); // 返回当前元素的键名和键值(目前是 Steve),并向前移动内部指针 ?>

然后是SPL标准库的一些测试

 'apple value', //position = 0
    "orange" => 'orange value', //position = 1
    "grape" => 'grape value',
    "plum" => 'plum value',
];

echo "**** use fruits directly *******n";
foreach ($fruits as $key => $value) {
    echo $key . ":" .$value. "n";
}
//我们经常用的foreach的原理是下面的这部分。

echo "**** use ArrayIterator in for *******n";
// 使用ArrayIterator遍历数组, 先把数组包装成一个ArrayObject,然后去生成迭代器
$obj = new ArrayObject($fruits);
$it = $obj->getIterator();

foreach ($it as $key => $value) {
    echo $key . ":" .$value. "n";
}

echo "**** use ArrayIterator in while *******n";
$it->rewind(); //别忘了rewind
while($it->valid()) {
    echo $it->key() . ":" .$it->current(). "n";
    $it->next();
}

echo "**** use ArrayIterator jump someone *******nn";
//跳过某些元素进行打印
$it->rewind();
if($it->valid()){
    $it->seek(2); //找到position = 2的节点,跳过之前的,调用seek方法,要先调用valid
    while($it->valid()) {
    echo $it->key() . ":" .$it->current(). "n";
    $it->next();
    }
}

echo "**** use ArrayIterator sort  *******nn";
$it->ksort(); //根据key排序
foreach ($it as $key => $value) {
    echo $key . ":" .$value. "n";
}

echo "**** use ArrayIterator sort  *******nn";
$it->asort(); //根据value排序
foreach ($it as $key => $value) {
    echo $key . ":" .$value. "n";
}

 ?>
push(1); //把新的节点数据添加到数据链表的顶部(Top)
$obj->push(2);
$obj->push(3);

$obj->unshift(10);//把新的节点数据添加到数据链表的底部(Bottom)
print_r($obj);

$obj->rewind(); //rewind用于把节点指针指向bottom所在节点
echo 'current:'. $obj->current()."n"; //current获取指针指向的节点

$obj->next();
echo 'next node:'. $obj->current()."n";

$obj->next();//指针指向下一个节点
$obj->next();
$obj->prev();//指针指向上一个节点
echo 'prev node:'. $obj->current()."n";

$obj->next();
$obj->next();
echo 'next node:'. $obj->current()."n";

if($obj->current())
    echo "Current node validn";
else
    echo "Current node invalidn";

$obj->rewind();
if($obj->valid())  //如果当前节点是有效节点,valid返回true
    echo "valid listn";
else
    echo "invalid listn";

echo "Pop value:". $obj->pop()."n";
print_r($obj);
echo 'current:'. $obj->current()."n";

$obj->next();//1
$obj->next();//2(top)
$obj->pop(); //1.把Top位置的节点从链表中删除,并返回。
     //如果current正好指向Top位置,那么调用pop之后,current会失效。
echo 'next node:'.$obj->current()."n";
print_r($obj);
$obj->shift();//把Bottom位置的节点从链表中删除,并返回。
print_r($obj);
enqueue('a'); // 插入一个节点到队列里面的Top位置
$queue->enqueue('b');
$queue->enqueue('c');

print_r($queue);

echo "Bottom:" . $queue->bottom() . "n"; //队列头
echo "Top:" . $queue->top() . "n"; //队列尾

//队列的offset=0是Bottom所在的位置,offset=1往下找
$queue->offsetSet(0,'A');
print_r($queue);

//双向列表的rewind和堆栈的rewind相反,堆栈的rewind使得当前指针指向Top所在的位置,而双向链表的rewind使得当前指针指向Bottom所在的位置,队列跟双向链表一样。
$queue->rewind();
echo "current: " . $queue->current() . "n";

while ($queue->valid()) {
    echo $queue->key()."=>".$queue->current(). "n";
    $queue->next();
}

//dequeue类似堆栈的pop,提取bottom位置的节点,并返回。同时,删除这个元素
echo "dequeue queue:" . $queue->dequeue() . "n";
print_r($queue);

 ?>
push('a'); //向堆栈中放入一个元素到Top位置
$stack->push('b');
$stack->push('c');

echo "Bottom:" . $stack->bottom() . "n"; //栈底
echo "Top:" . $stack->top() . "n"; //栈顶

//堆栈的offset=0是Top所在的位置,offset=1往上找
$stack->offsetSet(0,'C'); 
print_r($stack);

//双向列表的rewind和堆栈的rewind相反,堆栈的rewind使得当前指针指向Top所在的位置,而双向链表的rewind使得当前指针指向Bottom所在的位置。
$stack->rewind();
echo "current:" . $stack->current() . "n";

//堆栈的next往下走(往Bottom方向)
$stack->next();
echo "next:" . $stack->current() . "n";

// 遍历堆栈,先入后出
$stack->rewind();
while ($stack->valid()) {
    echo $stack->key()."=>" . $stack->current()."n";
    $stack->next();  //next操作不会从链表中删除元素
}

// 删除堆栈数据
$popObj = $stack->pop(); //pop操作从堆栈中提取出最后一个元素(Top位置),同时从堆栈中删除该节点
echo "Poped object: " . $popObj . "n";
print_r($stack);

$a = false || true;
$b = false or true; 

 ?>
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/228738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号