Создание ассоциативного массива со случайными значениями PHP


Я пытаюсь создать ассоциированный массив со случайными значениями. Например, если я дам вам эту строку:

something, anotherThing, foo, bar, baz

(длина строки является динамической - так что может быть 10 элементов или 15);

Я хотел бы создать массив на основе этих значений:

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

И он строит массив на основе количества заданных значений.

Я знаю, как упорядочить их в массив следующим образом:

explode(", ", $valueString);

Но как я могу присвоить значения, чтобы сделать его ассоциативным массив?

Спасибо.

Author: doughnut man, 2011-05-07

3 answers

ПРИМЕЧАНИЕ: Я предполагаю, что вы хотите, чтобы каждый элемент имел различное случайное значение (что не совсем то, что происходит в вашем примере).

С 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);
 7
Author: Jon, 2011-05-07 11:49:06

Все примеры хороши, но не просты

  1. Массив инициализации

    $arr = array();
    
  2. Сколько ценностей вам нужно?

    $m = 10;
    
  3. Сохранить случайным образом для всех элементов массива

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

Зачем усложнять этот простой пример?

, Арсен

 2
Author: publikz.com, 2011-05-07 11:53:04

Я полагаю, у вас есть ключи в $key_array. Это сделает $случайным значением каждого ключа:

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

Если вам нужен способ применения различных случайных значений к каждому элементу, вот одно (из нескольких) решений:

$array = array_fill_keys($key_array, 0);
foreach($array as &$a) {
  $a = rand();
}
 1
Author: Emil Vikström, 2011-05-07 11:49:17