thinkphp中的foreach循环使用错误,获取不到数据

thinkphp中的foreach循环使用错误,获取不到数据,第1张

从逻辑上看你的代码是没有问题的。可以使用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 详解。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9565881.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存