【问题标题】:Creating an associative array with random values PHP创建具有随机值 PHP 的关联数组
【发布时间】:2011-05-07 11:45:00
【问题描述】:

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

something, anotherThing, foo, bar, baz

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

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

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

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

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

explode(", ", $valueString);

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

谢谢。

【问题讨论】:

    标签: php arrays dynamic explode associative


    【解决方案1】:

    注意:我假设您希望每个项目都有一个 不同 随机值(这与您的示例中发生的情况不完全相同)。

    使用 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);
    

    【讨论】:

      【解决方案2】:

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

      1. 初始化数组

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

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

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

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

      ,阿森

      【讨论】:

        【解决方案3】:

        我想你有 $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-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-07
          • 2019-02-21
          • 1970-01-01
          • 2017-05-28
          • 2014-07-23
          相关资源
          最近更新 更多