2017-03-23 61 views
0

我有兩個陣列是這樣的: -洗牌第二陣列,使得它不與第一

Array $a 
(
    [0] => Array 
     (
      [video_id] => 1 
      [video_title] => A1 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => /challenge_video_1490082018-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490082017-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [1] => Array 
     (
      [video_id] => 2 
      [video_title] => A2 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490082526-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490082526-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [2] => Array 
     (
      [video_id] => 3 
      [video_title] => A3 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490083750-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490083750-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [3] => Array 
     (
      [video_id] => 4 
      [video_title] => A4 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490084089-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490084089-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [4] => Array 
     (
      [video_id] => 5 
      [video_title] => A5 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490084344-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490084344-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [5] => Array 
     (
      [video_id] => 6 
      [video_title] => A6 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490086316-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490086316-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [6] => Array 
     (
      [video_id] => 7 
      [video_title] => A7 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490087497-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490087497-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

) 

Array $b 
(
    [0] => Array 
     (
      [video_id] => 1 
      [video_title] => A1 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490082018-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490082017-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [1] => Array 
     (
      [video_id] => 2 
      [video_title] => A2 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490082526-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490082526-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [2] => Array 
     (
      [video_id] => 3 
      [video_title] => A3 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490083750-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490083750-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [3] => Array 
     (
      [video_id] => 4 
      [video_title] => A4 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490084089-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490084089-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [4] => Array 
     (
      [video_id] => 5 
      [video_title] => A5 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490084344-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490084344-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [5] => Array 
     (
      [video_id] => 6 
      [video_title] => A6 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490086316-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490086316-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

    [6] => Array 
     (
      [video_id] => 7 
      [video_title] => A7 
      [video_type] => 2 
      [user_id] => 7 
      [video_link] => challenge/challenge_video_1490087497-user_uservideo.mov 
      [video_image] => challenge/challenge_video_1490087497-Image.png 
      [video_like] => 0 
      [user_username] => sujan 
      [user_image] => 
      [likeCount] => 0 
      [fanCount] => 0 
      [followCount] => 0 
     ) 

) 

我想以這樣的方式來創建一個第三陣列$ C即 $ A [ 0] ['video_id']永遠不會是$ b [0] [video_id'];

對於這一點,我寫這段代碼: -

for($i = 0; $i < count($a); $i++) 
{ 
    if($a[i]['video_id'] != $b[i]['video_id']) 
    { 
     $c[] = $b[i]; 
    } 
    else 
    { 
     // fetch some other row from the rest of the rows// 
    } 
} 

我怎樣才能做到這一點?另外,如果$ b可以以所需方式混洗,那麼我可能不需要第三個數組$ c。我怎樣才能做到這一點?

回答

1

使用shuffle來洗牌陣列。

while (compareArrays($a, $b) == true) { 
    shuffle($b); 
} 

$c = $b; 

/** 
* return bool - True if equal, false if not. 
*/ 
function compareArrays($a, $b) { 
    for($i = 0; $i < count($a); $i++) { 
     if($a[i]['video_id'] != $b[i]['video_id']) { 
      return false; 
     } 
    } 

    return true; 
} 

做什麼,如果陣列中包含1元或者是空的?你不能以這種方式洗牌單元素數組。

+0

實際上,這兩個陣列將是相同的。 $ a將根據喜歡以降序播放視頻。 $ b將是隨機的。唯一的條件是兩個列表中的video_id都不應該在同一個地方。 – Saswat