PHP Logic problem
-
මම ගොඩක් උත්සහ කරා මේක විසදගන්න එත් බැරිඋන නිසයි Lankadevelopers එකේ දාන්න අදහස් කරේ .
data array එකක් තියෙනවා (පල්ලෙහා මම දාන්නම්) මට ඕනේ මේ array එකේ _ (underscore ) එකෙන් දකුණු පැත්තේ තියෙන value එක key එක වෙලා වම් පැත්තේ තියෙන එක key එකේ values array එකක් විදියට තාම එන්න ඕනේ .
<?php $permissions = ['create_user', 'edit_user', 'delete_user', 'create_post','edit_post', 'delete_post'];
මම මේක හැදුවා එත් පොඩි අවුලක් තියෙනවා . key එක විදියට ගන්න values එක පේලියට අවොත් වැඩ කරනවා , එත් තැන මාරු වෙලා අවොත් වැඩ කරන්නේ නැ .
ex :<?php $permissions = ['create_user', 'create_post','edit_post', 'delete_post', 'edit_user', 'delete_user'];
මේ තියෙන්නේ මගේ code එක :
<?php $permissions = ['create_user', 'edit_user', 'delete_user', 'create_post','edit_post', 'delete_post']; $permission_categories = []; $set = []; foreach ($permissions as $permission) { $name = explode("_", $permission); if (!array_key_exists($name[1], $permission_categories)) { $set = []; $permission_categories[$name[1]] = $name[0]; } if (array_key_exists($name[1], $permission_categories)) { $set[] = [ $name[0] ]; $permission_categories[$name[1]] = $set; } } print_r($permission_categories); exit();
අන්තිමට එන්න ඕනේ output එක තමා :
[ 'user' => ['create','edit', 'delete'], 'post' => ['create','edit','delete'] ]
-
Hope this is what you expect.
Happy coding .. :)<?php $permissions = ['create_user', 'create_post','edit_post', 'delete_post', 'edit_user', 'delete_user']; $permission_categories = []; $set = []; foreach ($permissions as $permission) { $name = explode("_", $permission); $key = $name[1]; $value = $name[0]; if (!array_key_exists($key, $permission_categories)) { $permission_categories[$key] = [$value]; }else{ array_push($permission_categories[$key],$value); } } print_r($permission_categories); exit();
-
@Emalsha Thank you very much, works as expected. thanks again.
-
<?php $permissions = ['create_user', 'create_post','edit_post', 'delete_post', 'edit_user', 'delete_user']; $permission_categories = []; foreach ($permissions as $value) { $name = explode("_", $value); # hasn't key if(!array_key_exists($name[1], $permission_categories)){ $permission_categories[$name[1]] = []; } $permission_categories[$name[1]][] = $name[0]; } print_r($permission_categories);