2016-08-06 54 views
-2

我對這是如何工作(標題)有點困惑? 例如,我設置這樣隨機數組鍵與rand()是如何工作的?

$array[rand(0, 5)] = 'Alex'; 
$array[rand(0, 5)] = 'Blue'; 
$array[rand(0, 5)] = 'Dale'; 
$array[rand(0, 5)] = 'Matt'; 

一個可能的結果的一個例子陣列陣列中的var_dump($array);後:

Array 
(
    [0] => Blue 
    [1] => Dale 
    [2] => Matt 
) 

技術上會發生什麼?

+0

你構建針對每個值.rand隨機密鑰(0,5)意味着它需要承擔0-5之間的任何一個,也可以是陣列的可變

更多信息的信息關鍵覆蓋問題在這裏。它是最好的例子。你可以看到重複的密鑰<?php $ array1 [rand(0,5)] ='Alex'; $ array2 [rand(0,5)] ='藍色'; $ array3 [rand(0,5)] ='Dale'; $ array4 [rand(0,5)] ='Matt'; print_r($ array1); print_r($ array2); print_r($ array3); print_r($ array4); ?> – JYoThI

+0

好的。那是因爲隨機化的重複值,但其他值呢?我應該使用數組函數來保持其他值,但與另一個鍵? – Anass

+0

您無法存儲相同的密鑰作爲另一個值,因此數組值被忽略 – JYoThI

回答

0

您的構造陣列中每個值的隨機密鑰.rand(0,5)表示它取0-5之間的任何一個數字,但可能是關鍵覆蓋問題在這裏。其中最好的例子是 。運行此一個以上的時間,知道每個輸出。你可以看到主要的重複

<?php 

    $array1[rand(0, 5)] = 'Alex'; 
    $array2[rand(0, 5)] = 'Blue'; 
    $array3[rand(0, 5)] = 'Dale'; 
    $array4[rand(0, 5)] = 'Matt'; 

    print_r($array1); 
    print_r($array2); 
    print_r($array3); 
    print_r($array4); 


    output: 

    out put differ each time .here you can see the key repetation . 

     Array ([4] => Alex) 
     Array ([3] => Blue) 
     Array ([4] => Dale) 
     Array ([5] => Matt) 
    ?> 
+0

好吧,那麼我被迫使用關聯數組或預定義鍵來保存數組中的所有值,對吧? – Anass

+0

你可以使用任何東西。如果你想保持所有的值意味着你的密鑰應該是唯一的每個值 – JYoThI

+0

也就是說,這是有疑問。謝謝@jothi – Anass

0

考慮下面的例子:

$array[0] = 'Alex'; //replaced rand(0, 5) with 0 
$array[3] = 'Blue'; //replaced rand(0, 5) with 3 
$array[2] = 'Dale'; //replaced rand(0, 5) with 2 
$array[4] = 'Matt'; //replaced rand(0, 5) with 4 

var_dump($array); 

我們有如下的輸出沒有任何變化:

enter image description here

當您使用rand(0, 5)它需要給出隨機值,因此它使每次運行變化,你有雙不同的產出。

var_dump - 轉儲關於var_dump

+0

感謝@tharif爲豐富的解釋! :) – Anass