2013-10-12 23 views
0

我有兩個陣列如下:如何在以下場景中集成兩個for/foreach循環?

$user_ids = Array 
(
    [0] => 159a8a6f1c00c5c4d5d0daaab2aa4227 
    [1] => a39777761f7816031aec676c80c3a8ad 
    [2] => 348703d858f2f36f3fed0da29d04a905 
    [3] => 05ce989ed54dcd3ecca8af9e0e373c5c 
    [4] => 2fe40d28847aad4f23ebf74cd93b7235 
    [5] => 717dce4998cc4f2b926a7a731c2ee651 
    [6] => 5d3dbc660f5896f790ad15cc40b14209 
    [7] => 41e400183bb54c2dd25dcd2f062a7ca9 
    [8] => a8e0f96c0f68242df08c91d58e14d5aa 
    [9] => ddb29b7d35a24b5bad77bab752ec921b 
    [10] => eaf925c5e43f387d7d0eba7ee45856e3 
    [11] => 5291d6ee6c5b577514e832f077a496ca 
    [12] => 89f9e41b866c8e1c09e66e183a4b9265 
    [13] => 836d8a3e18888ee2b79b9636a8227c08 
    [14] => f9f3830700718df102c6c54bc004bdf9 
    [15] => 982e5d10baf398cb07a0ed388d8e1577 
    [16] => eb461f406d36a46db88f59f4c0b7b7f1 
    [17] => 9bfd556bd9ee849048690898a9d1ed3c 
    [18] => 1f7ec7180354a8741d4e86949e5922fe 
    [19] => 75cd2b01677ac49306caed58b26d4781 
) 

$user_status = Array 
(
    [0] => enable 
    [1] => disable 
    [2] => enable 
    [3] => disable 
    [4] => disable 
    [5] => disable 
    [6] => disable 
    [7] => enable 
    [8] => disable 
    [9] => disable 
    [10] => disable 
    [11] => disable 
    [12] => disable 
    [13] => enable 
    [14] => disable 
    [15] => disable 
    [16] => disable 
    [17] => enable 
    [18] => disable 
    [19] => enable 
) 

第一陣列是給user_ids而另一個陣列giveing每USER_ID的對應狀態。所以上面的數組總是會有相等的數字。的元素。 現在我想要實現的是爲每個元素(user_id)調用一個函數user_ids數組。但在此之前,我必須檢查是否禁用將在函數調用中使用的user_id的狀態。如果user_id的狀態被啓用,那麼該函數不應該被調用,並且下一個user_id應該起作用。我無法爲這種情況寫出正確的邏輯。你能幫我嗎?提前致謝。我試過的PHP代碼如下:

$user_ids = explode(',', $request['items']); 
    $user_statuses = explode(',', $request['user_status']); 
    $count = 0; 
    foreach ($user_ids as $user_id) { 
    foreach ($user_statuses as $user_status) { 
     if(user_status=='disable') { 
     $objAdminUsers->UpdateUserStatus($user_id, $user_status); 
    $count++; 
     } 
    } 
    } 

回答

2

你不需要一個嵌套的foreach來做到這一點。使用array_combine()很容易。通過使用ID作爲密鑰,來創建一個新的陣列,並通過陣列狀態的值,然後循環,並調用該函數,你需要它:

$array = array_combine($user_ids, $user_statuses); 
$array = array_map('trim', $array); // remove whitespaces 
foreach ($array as $id => $status) { 
    if($status == 'disable') { 
     $objAdminUsers->UpdateUserStatus($id, $status); 
     $count++; 
    } 
} 

Demo!

1

也許是這樣嗎?

$user_ids = explode(',', $request['items']); 
    $user_statuses = explode(',', $request['user_status']); 
    foreach ($user_statuses as $key => $user_status) { 
    if(user_status=='disable') { 
     $objAdminUsers->UpdateUserStatus($user_ids[$key], $user_status); 
    } 
    } 
1

你很近。由於這兩種陣列包含偶數值的量,就可以得到$key而循環元素,例如:

$user_ids = explode(',', $request['items']); 
    $user_statuses = explode(',', $request['user_status']); 
    $count = 0; 
    foreach ($user_ids as $key => $user_id) { 
    // $key contains the number between the brackets 
     if($user_statuses[$key]=='disable') { 
     $objAdminUsers->UpdateUserStatus($user_id, $user_statuses[$key]); 
    $count++; 
     } 
    } 
    } 

這樣,您就不需要第二個foreach循環,但你只需同時讀取其他陣列

1

你只需要一個的foreach,像這樣:

$user_ids = explode(',', $request['items']); 
    $user_statuses = explode(',', $request['user_status']); 
    $count = 0; 
    foreach ($user_ids as $key => $user_id) { 
     if($user_status[$key]=='disable') { 
     $objAdminUsers->UpdateUserStatus($user_id, $user_status[$key]); 
     $count++; 
     } 
    } 
1

參見:http://phpfiddle.org/main/code/8ni-kjz

while ($match = current($user_status)) { 
    if ($match == 'disable') { 
     $id = key($user_status); 
     objAdminUsers->UpdateUserStatus($user_ids[$id], $user_status[$id]); 
       $count++; 
    } 
    next($user_status); 
}