很多站长朋友们都不太清楚php遍历所有key,今天小编就来给大家整理php遍历所有key,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 使用php Memcache模块如何正确遍历所有KEY以及VALUE 2、 PHP遍历键值对数组 3、 php数组函数,遍历数组的几种方法 4、 php中遍历二维数组的几种方式 使用php Memcache模块如何正确遍历所有KEY以及VALUE在php提供的用于与memcached交互的扩展模块中有memcached与memcache,前者提供方法getAllKeys用于遍历所有Memcached服务器上的key,但是并不保证原子操作,而后者却没有提供任何方法,虽然在PHP官方
文档中有人给出使用方法getExtendedStats来间接获取Memcached服务器上的所有key,但是给出的代码是有不少坑的,如果拿来就用,对于cluster的memcached服务器而言,有些问题就需要指出来。
下面将给出官方文档中的代码,并指出可能面临的问题,代码如下:
<?php
/*\*
* Function to get all memcache keys
* @author Manish Patel
* @Created: 28-May-2010
\*/
function getMemcacheKeys() {
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect to memcache server");
$list = array();
$allSlabs = $memcache->getExtendedStats('slabs');
$items = $memcache->getExtendedStats('items');
foreach($allSlabs as $server => $slabs) {
foreach($slabs AS $slabId => $slabMeta) {
$cdump = $memcache->getExtendedStats('cachedump',(int)$slabId);
foreach($cdump AS $keys => $arrVal) {
foreach($arrVal AS $k => $v){
echo $k ."<br>";
}
}
}
}//EO getMemcacheKeys() ?>
在上述代码中,如果用于获取单个memcached服务器上的key,是不存在任何问题,但是获取连接池中的多个memcached所有key就存在问题,会发现打印出重复的key,问题就在于当使用getExtendedStats用去特定$slabID
上的信息时,返回的是连接池中所有的服务器上的特定$slabId 的存储的keys信息。当$server为"127.0.0.1:11214"且$slabId为0将变量$cdump的信息打印出如下所示:
array(2) {
["127.0.0.1:11214"]=>
array(1) {
["course_schools__??¨é?¨"]=>
array(2) {
[0]=>
string(1) "0" [1]=>
string(10) "12" }
}
["127.0.0.1:11216"]=>
array(1) {
["monitorMemcache"]=>
array(2) {
[0]=>
string(2) "10" [1]=>
string(10) "12" }
}
}
当$server为"127.0.0.1:11216"且$slabId为0将变量$cdump的信息打印出如下所示:
array(2) {
["127.0.0.1:11214"]=>
array(1) {
["course_schools__??¨é?¨"]=>
array(2) {
[0]=>
string(1) "0" [1]=>
string(10) "12" }
}
["127.0.0.1:11216"]=>
array(1) {
["monitorMemcache"]=>
array(2) {
[0]=>
string(2) "10" [1]=>
string(10) "12" }
}
}
PHP遍历键值对数组可以遍历两次$a, 第一次取出所有的父级栏目,放入$newarr中,第二次将子栏目放入对应
的父级栏目数组中, 最后使用$newarr就行
不过这是建立在只有二级栏目的基础上,如果有三级栏目的话就还要麻烦些了
$newarr = array();
foreach ($a as $key => $value)
{
if($value['fID'] == 0)
{
$cid = $value['cID'];
$newarr[$cid] = $value;
unset($a[$key]);
}
}
foreach ($a as $key => $value)
{
if($value['fID'] != 0)
{
$fid = $value['fID'];
$newarr[$fid]['zilanmu'][] = $value;
}
}
php数组函数,遍历数组的几种方法介绍三种。
// for、 foreach、 each and list
// for 循环方式遍历数组,仅可遍历索引数组
$ary = ['hello', 'world'];
for ($key = 0; $key < count($ary); $key ++) {
echo $key . $ary[$key];
}
// foreach 专门用来遍历数组的语言结构
foreach ($ary AS $key => $value) {
echo $key . $value;
}
// each 配合 list 循环遍历
while (list($key, $value) = each($ary)) {
echo $key . $value;
}
php中遍历二维数组的几种方式?php
//使用for循环遍历
$arr2=array(array("张三","20","男"),array("李四","25","男"),array("王五","19","女"),array("赵六","25","女"));
echo "<table border=2 bordercolor=red><tr><td>姓名</td><td>年龄</td gt;<td>性别</td></tr>";
for($i=0;$i<4;$i++){
echo "<tr>";
for($j=0;$j<3;$j++){
echo "<td>";
echo $arr2[$i][$j];
echo "</td>";
}
echo "</tr>";
echo "<br>";
}
echo "</table>";
?>
//使用foreach遍历
<?php
$arr = array('one'=>array('name'=>'张三','age'=>'23','sex'=>'男'),
'two'=>array('name'=>'李四','age'=>'43','sex'=>'女'),
'three'=>array('name'=>'王五','age'=>'32','sex'=>'男'),
'four'=>array('name'=>'赵六','age'=>'12','sex'=>'女'));
foreach($arr as $k=>$val){
echo $val['name'].$val['age'].$val['sex']."<br>";
}
echo "<p>";
?>
<?php
$arr = array('one'=>array('name'=>'张三','age'=>'23','sex'=>'男'),
'two'=>array('name'=>'李四','age'=>'43','sex'=>'女'),
'three'=>array('name'=>'王五','age'=>'32','sex'=>'男'),
'four'=>array('name'=>'赵六','age'=>'12','sex'=>'女'));
foreach($arr as $key=>$value){
foreach($value as $key2=>$value2){
echo $value2;
}
echo "<br>";
}
?>
关于php遍历所有key的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php遍历所有key php遍历数组使用的是foreach的详细内容...