简体   繁体   中英

Access multidimensional stdClass array dynamically- Codeigniter

I am wondering how can i access following array using nested foreach loop ?

   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.

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

 ?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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