2011-09-26 87 views
0

我正在使用此代码:组由阵列值

$permissions = array("canview", "canpostthreads", "canpostreplies", "canpostpolls", "all"); 
foreach($permissions as $permission) { 
    for ($i = 1; $i <= 5; $i++) { 
    $mode = $_POST['permission'][$i][$permission]; 
    if($mode == 1) 
     echo "{$permission} = {$i}:::"; 
    } 
} 

和输出,如果我检查一些复选框是:

canview = 1:::canview = 5:::canpostreplies = 3:::canpostpolls = 5::: 

我wan't输出为以下:

而不是

canview = 1:::canview = 5:

canview = 1,5 

和我有没有例如:

canpostpolls = 1:::canpostpolls = 2:::canpostpolls = 3 

这将是:

canpostpolls = 1,2,3:::canview = 1,5 

我希望你明白它的家伙。这是我自己的想法,你可以随意与我分享你的想法,这些数据将被导出到mysql表中。

回答

2
$permissions = array("canview", "canpostthreads", "canpostreplies", "canpostpolls", "all"); 
$setpermissions = array(); 
foreach($permissions as $permission) { 
    for ($i = 1; $i <= 5; $i++) { 
    $mode = $_POST['permission'][$i][$permission]; 
    if($mode == 1) { 
     if (!isset($setpermissions[$permission])) { 
     $setpermissions[$permission] = array(); 
     } 
     $setpermissions[$permission][] = $i; 
    } 
    } 
} 
$plist = array(); 
foreach ($setpermissions as $name => $sp) { 
    $plist[] = "$name = " . implode(',', $sp); 
} 
echo implode(':::', $plist); 
0

您需要筛选数据多一点......也许是这样的:

$permissions = array("canview", "canpostthreads", "canpostreplies", "canpostpolls", "all"); 
$filtered_perms = array(); 
foreach($permissions as $permission) { 
    for ($i = 1; $i <= 5; $i++) { 
    $mode = $_POST['permission'][$i][$permission]; 
    if($mode == 1) { 
     if(!is_array($filtered_perms[$permission])) { 
     $filtered_perms[$permission] = array(); 
     } 
     $filtered_perms[$permission][] = $i; 
    } 
} 

然后,你可以这样做:

$final_perms = array(); 
foreach($filtered_perms as $key => $val) { 
     $final_perms[$key] = implode(",", $val); 
    } 

希望帮助!

0
$permissions = array("canview", "canpostthreads", "canpostreplies", "canpostpolls", "all"); 
$userPermissions = array(); 
foreach($permissions as $permission) { 
    for ($i = 1; $i <= 5; $i++) { 
    $mode = $_POST['permission'][$i][$permission]; 
    if($mode == 1) 
     $userPermissions[$permission][] = $i; 
    } 
} 
foreach($userPermissions as $permission => $values) { 
    echo "{$permission} = " . implode(',', $values) . ":::"; 
} 
+0

如果您需要删除' ':::''从末端,而不是'echo'您可以将所有内容保存到一个字符串和'RTRIM( ':',$字符串)' – nachito

0

您可以这样做 - 实质上,在输出值之前组合值。

$permissions = array("canview", "canpostthreads", "canpostreplies", "canpostpolls", "all"); 
foreach($permissions as $permission) { 
    $vals = array(); 
    for ($i = 1; $i <= 5; $i++) { 
    $mode = $_POST['permission'][$i][$permission]; 
    if($mode == 1) 
     $vals[] = $i; 
    } 
    if(count($vals)) 
    echo $permission . ' == ' . implode(',', $vals); 
}