2011-05-07 104 views
2

我正在嘗試使用隨機值生成關聯數組。例如,如果我給你這個字符串:使用隨機值創建關聯數組PHP

something, anotherThing, foo, bar, baz 

(字符串的長度是動態的 - 所以可能有10個項目,或15);

我想創建一個基於這些值的數組:

$random = rand(); 
array("something"=>$random, "anotherThing"=>$random, "foo"=>$random, "bar"=>$random, "baz"=>$random); 

,並根據它的多少值給出構建陣列。

我知道如何把它們整理成一個數組,像這樣:

explode(", ", $valueString); 

但我怎麼能分配值,使之關聯數組?

謝謝。

回答

7

注意:我假設您希望每個項目有一個不同的隨機值(這不正是您的示例中發生的情況)。

隨着PHP 5.3或更高版本,你可以像這樣做最容易:

$keys = array('something', 'anotherThing', 'foo', 'bar', 'baz'); 
$values = array_map(function() { return mt_rand(); }, $keys); 

$result = array_combine($keys, $values); 
print_r($result); 

對於早期版本,或者如果你不想使用array_map,你可以做同樣的事情在一個更多的腳踏實地,但稍微更詳細的方式:

$keys = array('something', 'anotherThing', 'foo', 'bar', 'baz'); 
$result = array(); 
foreach($keys as $key) { 
    $result[$key] = mt_rand(); 
} 

print_r($result); 
1

我想你有鑰匙在$ key_array。這將使每個鍵的$隨機值:

$random = rand(); 
$array = array_fill_keys($key_array, $random); 

如果您需要一種方式來不同的隨機值適用於每一個元素,這裏有一個(幾個)解決方案:

$array = array_fill_keys($key_array, 0); 
foreach($array as &$a) { 
    $a = rand(); 
} 
2

所有例子都不錯,但不是簡單的

  1. 初始化數組

    $arr = array(); 
    
  2. 您需要多少個值?

    $m = 10; 
    
  3. 保存隨機數組

    for ($i=0;$i<$m;$i++) 
    { 
        $arr[$i] = mt_rand(); 
    } 
    

爲什麼會做出更復雜的這個簡單的例子中的所有元素?

,阿森德