मेरे पास एक सरणी है, उदाहरण के लिए:

 array("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg");

मैं इसमें से पांच यादृच्छिक और अद्वितीय मूल्यों का चयन करना चाहता हूं और उन्हें पांच अलग-अलग चरों में रखना चाहता हूं, उदाहरण के लिए:

    $one = "ccc"; 
    $two = "aaa";
    $three = "bbb"; 
    $four = "ggg";
    $five = "ddd";

मुझे पहले से ही यह कोड नीचे मिल गया है जो यादृच्छिक तार उत्पन्न करने और उन्हें प्रदर्शित करने के लिए काम करता है, लेकिन मुझे जो आउटपुट चाहिए वह उन्हें विभिन्न चरों में प्राप्त करने और उन्हें अलग से उपयोग करने में सक्षम होने के लिए है।

<?php

$arr = $arr_history = array("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg");

for ( $i = 1; $i < 5; $i++ )
{
  // If the history array is empty, re-populate it.
  if ( empty($arr_history) )
    $arr_history = $arr;

  // Randomize the array.
  array_rand($arr_history);

  // Select the last value from the array.
  $selected = array_pop($arr_history);

  // Echo the selected value.
  echo $selected . PHP_EOL;
 }
1
Claudio Delgado 7 जून 2018, 17:06

4 जवाब

सबसे बढ़िया उत्तर

आप shuffle सरणी कर सकते हैं और मान निर्दिष्ट करने के लिए list का उपयोग कर सकते हैं

$arr = array("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg");

shuffle( $arr );
list($one, $two, $three, $four, $five) = $arr;

दस्तावेज़: shuffle(), list()

7
Eddie 7 जून 2018, 17:10

इस का उपयोग करें:

$arr = $arr_history = array("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg");
$random = [];

for ( $i = 1; $i <= 5; $i++ )
{
  // If the history array is empty, re-populate it.
  if ( empty($arr_history) )
    $arr_history = $arr;

  // Randomize the array.
  array_rand($arr_history);

  // Select the last value from the array.
  $selected = array_pop($arr_history);

  array_push($random, $selected);
}

var_dump($random);
  • मैंने आपके लूप लॉजिक को ठीक कर दिया है, इसलिए अब यह 4 के बजाय 5 आइटम प्रदर्शित करता है।
  • मैं एक सरणी को परिभाषित करने के लिए लघु सिंटैक्स का उपयोग कर रहा हूं जिसके लिए 5.4 या ऊपर।

आउटपुट

array(5) {
  [0]=>
  string(3) "ggg"
  [1]=>
  string(3) "fff"
  [2]=>
  string(3) "eee"
  [3]=>
  string(3) "ddd"
  [4]=>
  string(3) "ccc"
}

लाइव उदाहरण

आरईपीएल

1
Script47 7 जून 2018, 17:13

यह काम करना चाहिए:

    $arr = array("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg");

    $tmp = $arr;
    array_rand($tmp);

    $one = $tmp[0];
    $two = $tmp[1];
    ...

हालांकि याद रखें कि अगर $tmp[n] में मान वास्तव में मौजूद है तो यह जांच नहीं करेगा

0
Francesco 7 जून 2018, 17:10

आप सरणी में तत्वों के क्रम को यादृच्छिक बनाने के लिए PHP के shuffle फ़ंक्शन का उपयोग कर सकते हैं, फिर पहले तत्व ले सकते हैं।

$randomArray = array("aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg");
shuffle($randomArray);

$randomArray = array_slice($randomArray, 0, 5);

$randomArray[0]; //1st element
$randomArray[1]; //2nd element
$randomArray[2]; //3rd element...
0
schildi 7 जून 2018, 19:57