Создание ассоциативного массива со случайными значениями PHP - PullRequest
2 голосов
/ 07 мая 2011

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

something, anotherThing, foo, bar, baz

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

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

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

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

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

explode(", ", $valueString);

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

Спасибо.

Ответы [ 3 ]

7 голосов
/ 07 мая 2011

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

С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 голосов
/ 07 мая 2011

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

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

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

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

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

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

, Арсен

1 голос
/ 07 мая 2011

Полагаю, у вас есть ключи в $ 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();
}
...