
从逻辑上看你的代码是没有问题的。可以使用var_export 输出一下最终的$xusers 看下是否是你要的数据
$xusers = M('member')->where(['parentid'=>12345])->field('id')->select();foreach ($xusers as $key => $value) {
$pid1=($xusers[$key]['id']);
$xusers[$key]['erid']=M('member')->where(['parentid'=>$pid1])->field('id')->select();
}
var_export($xusers);
输出的格式应该类似
array(array(
'id'=>123458,
'erid'=>array(
array(
'id'=>221451
),
array(
'id'=>221452
),
),
),
array(
'id'=>123457,
'erid'=>array(
),
),
array(
'id'=>123457,
'erid'=>array(
array(
'id'=>221453
),
),
),
)
在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('127001', 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为"127001:11214"且$slabId为0将变量$cdump的信息打印出如下所示:
array(2) {
["127001:11214"]=>
array(1) {
["course_schools__¨é¨"]=>
array(2) {
[0]=>
string(1) "0" [1]=>
string(10) "12" }
}
["127001:11216"]=>
array(1) {
["monitorMemcache"]=>
array(2) {
[0]=>
string(2) "10" [1]=>
string(10) "12" }
}
}
当$server为"127001:11216"且$slabId为0将变量$cdump的信息打印出如下所示:
array(2) {
["127001:11214"]=>
array(1) {
["course_schools__¨é¨"]=>
array(2) {
[0]=>
string(1) "0" [1]=>
string(10) "12" }
}
["127001:11216"]=>
array(1) {
["monitorMemcache"]=>
array(2) {
[0]=>
string(2) "10" [1]=>
string(10) "12" }
}
}
一、PHP根据数据的值获取密钥:有两个函数可用。
二、定义一个数组,其中值具有重复部分。
三、使用array_keys()获取密钥名。
四、保存文件并在浏览器中查看array_keys()的输出。
五、使用array search()获取密钥名。
六、保存文件并在浏览器中查看array search()的输出结果。
这个可以取巧,先把这个数插进数组,然后数组排序,然后获得这个数的下标,-1就是相对位置的值前面26的值,27本来下标就是源数组中的后一个
死一点的办法就是for循环对比值了,关键比对if:
if(arr[i]<27 && arr[i+1]<27) continue;
if(arr[i]<27 && arr[i+1]>27) echo 相对位置在i,i+1之间 ;
具体自己写啊
以上就是关于thinkphp中的foreach循环使用错误,获取不到数据全部的内容,包括:thinkphp中的foreach循环使用错误,获取不到数据、使用php Memcache模块如何正确遍历所有KEY以及VALUE、JS for in 循环中的key ,value 详解。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)