2

我正在尝试生成具有随机值的关联数组。例如,如果我给你这个字符串:

something, anotherThing, foo, bar, baz

(字符串的长度是动态的 - 所以可能有 10 个项目,或 15 个);

我想根据这些值创建一个数组:

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

它根据给定的值来构建数组。

我知道如何将它们排列成这样的数组:

explode(", ", $valueString);

但是如何分配值以使其成为关联数组?

谢谢。

4

3 回答 3

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);
于 2011-05-07T11:49:06.217 回答
2

所有的例子都很好,但并不简单

  1. 初始化数组

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

    $m = 10;
    
  3. 随机保存到数组的所有元素

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

为什么要把这个简单的例子变得更复杂?

, 阿森

于 2011-05-07T11:53:04.007 回答
1

我想你有 $key_array 中的键。这将使 $random 成为每个键的值:

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

如果您需要一种对每个元素应用不同随机值的方法,这里有一个(几个)解决方案:

$array = array_fill_keys($key_array, 0);
foreach($array as &$a) {
  $a = rand();
}
于 2011-05-07T11:49:17.400 回答