Создание ассоциативного массива со случайными значениями PHP
Я пытаюсь создать ассоциированный массив со случайными значениями. Например, если я дам вам эту строку:
something, anotherThing, foo, bar, baz
(длина строки является динамической - так что может быть 10 элементов или 15);
Я хотел бы создать массив на основе этих значений:
$random = rand();
array("something"=>$random, "anotherThing"=>$random, "foo"=>$random, "bar"=>$random, "baz"=>$random);
И он строит массив на основе количества заданных значений.
Я знаю, как упорядочить их в массив следующим образом:
explode(", ", $valueString);
Но как я могу присвоить значения, чтобы сделать его ассоциативным массив?
Спасибо.
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);
Все примеры хороши, но не просты
-
Массив инициализации
$arr = array();
-
Сколько ценностей вам нужно?
$m = 10;
-
Сохранить случайным образом для всех элементов массива
for ($i=0;$i<$m;$i++) { $arr[$i] = mt_rand(); }
Зачем усложнять этот простой пример?
, Арсен
Я полагаю, у вас есть ключи в $key_array. Это сделает $случайным значением каждого ключа:
$random = rand();
$array = array_fill_keys($key_array, $random);
Если вам нужен способ применения различных случайных значений к каждому элементу, вот одно (из нескольких) решений:
$array = array_fill_keys($key_array, 0);
foreach($array as &$a) {
$a = rand();
}