简体   繁体   English

动态访问多维stdClass数组-Codeigniter

[英]Access multidimensional stdClass array dynamically- Codeigniter

I am wondering how can i access following array using nested foreach loop ? 我想知道如何使用嵌套的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 ) ) 

here is my code: 这是我的代码:

    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;  ?>

This way i am able to get result relate to index 0 but unable to get result if array index goes above 0. 这样我可以得到与索引0有关的结果,但是如果数组索引超过0则无法得到结果。

Answer 回答

I figure out with following code: 我找出以下代码:

             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 }  }

It should be like this if I understood this correctly 如果我理解正确的话应该是这样

// Iterating all permissions

foreach($allPermissions as $allPermission){

// Iterating the roles of a specific permission

    foreach($allPremisson as $rolePermission) {

    }
}

try this: 尝试这个:

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;  ?>

in normal php you can do this: 在普通的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