繁体   English   中英

动态访问多维stdClass数组-Codeigniter

[英]Access multidimensional stdClass array dynamically- Codeigniter

我想知道如何使用嵌套的foreach循环访问以下数组?

   Array ( [0] => 
   Array ( [0] => stdClass Object ( [roleID] => 3 [permID] => 2 ) 
           [1] => stdClass Object ( [roleID] => 3 [permID] => 3 ) 
           [2] => stdClass Object ( [roleID] => 2 [permID] => 4 )
           [3] => stdClass Object ( [roleID] => 2 [permID] => 5 ) ) 

这是我的代码:

    foreach($allPermissions as $allPermission) :

     foreach($rolePermissions as $rolePermission) :  

         if($allPermission->ID==$rolePermission[0]->permID) {  ?>

          <div class="perms">
            <input type="checkbox" name="permissions[]" id="<?php echo $allPermission->ID; ?>"  value="<?php print $allPermission->ID; ?>"  checked><?php print $allPermission->permName; ?></option></div>
         <?php } 
        endforeach;
     endforeach;  ?>

这样我可以得到与索引0有关的结果,但是如果数组索引超过0则无法得到结果。

回答

我找出以下代码:

             foreach($rolePermissions as $key=>$val) :  
                   foreach($val as $subkey=>$subval)
                        {

                  if($allPermission->ID==$subval->permID) {
            ?>
          <div class="perms">
           <input type="checkbox" name="permissions[]" id="<?php echo $allPermission->ID; ?>"  value="<?php print $allPermission->ID; ?>"  checked><?php print $allPermission->permName; ?></option></div>
            <?php }  }

如果我理解正确的话应该是这样

// Iterating all permissions

foreach($allPermissions as $allPermission){

// Iterating the roles of a specific permission

    foreach($allPremisson as $rolePermission) {

    }
}

尝试这个:

foreach($allPermissions as $allPermission) :

     foreach($rolePermissions as $key=>$rolePermission) :  

         if($allPermission->ID==$rolePermission[$key]->permID) {  ?>

          <div class="perms">
            <input type="checkbox" name="permissions[]" id="<?php echo $allPermission->ID; ?>"  value="<?php print $allPermission->ID; ?>"  checked><?php print $allPermission->permName; ?></option></div>
         <?php } 
        endforeach;
     endforeach;  ?>

在普通的php中,您可以执行以下操作:

<?php 
$array=array ( 0 => 
   array ( 0 => array( roleID => 3, permID => 2 ), 
           1 => array ( roleID => 3 ,permID => 3 ),
           2 => array ( roleID => 2 ,permID => 4 ),
           3 => array ( roleID => 2 ,permID=> 5 ) ) );


    foreach($array as $allPermission) 

     foreach($array as $key=>$rolePermission)  

         if($allPermission->roleID==$rolePermission[$key]->permID) {  ?>

          <div class="perms">
            <input type="checkbox" name="permissions[]" id="<?php echo $allPermission->ID; ?>"  value="<?php print $allPermission->ID; ?>"  checked><?php print $allPermission->permName; ?></option></div>
         <?php } 

 ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM