উত্তর:
আপনি ঠিক করতে পারেন:
$k = array_rand($array);
$v = $array[$k];
আপনার যখন কোনও সহযোগী অ্যারে থাকে তখন এটি করার উপায়।
array_rand_value
array_rand()
টুইস্টার জেনারেটর ব্যবহার করে: র্যান্ড () এলটিজড এমটি_আর্যান্ড () এবং শ্রেনড () এলিট করে এমটি_স্রান্ড () । অনুশীলনে এটি এখন যথেষ্ট ভাল হওয়া উচিত।
পিএইচপি কেবল তার জন্য একটি ফাংশন সরবরাহ করে: অ্যারে_আরেন্ড ()
http://php.net/manual/en/function.array-rand.php
$ran = array(1,2,3,4);
$randomElement = $ran[array_rand($ran, 1)];
array_rand
ফাংশনের দ্বিতীয় যুক্তির ডিফল্ট মান 1
তাই এটি লেখার দরকার নেই।
আপনি mt_rand () ব্যবহার করতে পারেন
$random = $ran[mt_rand(0, count($ran) - 1)];
আপনার যদি প্রয়োজন হয় তবে এটি একটি ফাংশন হিসাবেও কাজে আসবে
function random_value($array, $default=null)
{
$k = mt_rand(0, count($array) - 1);
return isset($array[$k])? $array[$k]: $default;
}
array_rand
এটি যতটা এলোমেলো নয়, তত mt_rand
পছন্দ করা হয়
isset
অংশটি কী? এটি যাইহোক সাহসী অ্যারেগুলির জন্য ব্যর্থ হবে।
mt_rand
পরিবর্তে ব্যবহার করার সময় rand
মনে হয় কিছু আইটেম অন্যের চেয়ে বেশি পছন্দ হয়
নীচের মত আপনার অ্যারে থেকে একটি এলোমেলো কী নির্বাচন করতে আপনি অ্যারে_র্যান্ড ফাংশনটি ব্যবহার করতে পারেন।
$array = array("one", "two", "three", "four", "five", "six");
echo $array[array_rand($array, 1)];
অথবা আপনি কোনও র্যান্ডম সূচক নির্বাচন করতে র্যান্ড এবং কাউন্ট ফাংশনগুলি ব্যবহার করতে পারেন।
$array = array("one", "two", "three", "four", "five", "six");
echo $array[rand(0, count($array) - 1)];
লারাভেল থেকে প্রাপ্ত Collection::random()
:
function array_random($array, $amount = 1)
{
$keys = array_rand($array, $amount);
if ($amount == 1) {
return $array[$keys];
}
$results = [];
foreach ($keys as $key) {
$results[] = $array[$key];
}
return $results;
}
ব্যবহার:
$items = ['foo', 'bar', 'baz', 'lorem'=>'ipsum'];
array_random($items); // 'bar'
array_random($items, 2); // ['foo', 'ipsum']
কয়েকটি নোট:
$amount
এর চেয়ে কম বা সমান হতে হবে count($array)
।array_rand()
কীগুলি বদলান না (পিএইচপি 5.2.10 থেকে, 48224 দেখুন ), তাই আপনার বাছাই করা আইটেমগুলি সর্বদা মূল ক্রমে থাকবে। shuffle()
পরে প্রয়োজনে ব্যবহার করুন ।
ডকুমেন্টেশন: array_rand()
,shuffle()
সম্পাদনা করুন: লারাভেল ফাংশনটি তখন থেকে লক্ষণীয়ভাবে বেড়েছে, দেখুন লারাভেল 5.4 এর Arr::random()
। বড় হওয়া লারাভেল ফাংশন থেকে প্রাপ্ত আরও কিছু বিস্তৃত এখানে:
function array_random($array, $number = null)
{
$requested = ($number === null) ? 1 : $number;
$count = count($array);
if ($requested > $count) {
throw new \RangeException(
"You requested {$requested} items, but there are only {$count} items available."
);
}
if ($number === null) {
return $array[array_rand($array)];
}
if ((int) $number === 0) {
return [];
}
$keys = (array) array_rand($array, $number);
$results = [];
foreach ($keys as $key) {
$results[] = $array[$key];
}
return $results;
}
কয়েকটি হাইলাইট:
array_rand
ফাংশন বৃহৎ অ্যারে উপর একটি অসম বন্টন আছে, না যে অ্যারে আইটেম সমান সম্ভাবনা বাছাই করা পেতে বলে মনে হয়। অ্যারে এলোমেলো ব্যবহার করে এবং তারপরে প্রথম উপাদানটি গ্রহণ করলে এই সমস্যা হয় না:
$myArray = array(1, 2, 3, 4, 5);
// Random shuffle
shuffle($myArray);
// First element is random now
$randomValue = $myArray[0];
mt_rand()
সম্ভবত ব্যবহারের জন্য আরও উপযুক্ত।
সরাসরি মূল্য পেতে অ্যারে ফ্লিপিংয়ের মাধ্যমে আরেকটি পদ্ধতি।
টুকিটাকি
$array = [ 'Name1' => 'John', 'Name2' => 'Jane', 'Name3' => 'Jonny' ];
$val = array_rand(array_flip($array));
array_rand
রিটার্ন কী মান না। সুতরাং, আমরা কী হিসাবে মানকে উল্টিয়ে দিচ্ছি।
দ্রষ্টব্য: পিএইচপি কী সর্বদা একটি অনন্য কী হতে পারে, সুতরাং অ্যারেটি ফ্লিপ করা হলে, কী হিসাবে সদৃশ মানটি ওভাররাইট করা হবে।
$array[array_rand($array)];
?
array_flip
কী হিসাবে সদৃশ সরিয়ে ফেলুন ফলাফল দিন ... মানে কোনও সদৃশ নয়!
$rand = rand(1,4);
বা, বিশেষত অ্যারেগুলির জন্য:
$array = array('a value', 'another value', 'just some value', 'not some value');
$rand = $array[ rand(0, count($array)-1) ];
আপনার নির্বাচনের কি কোনও সুরক্ষা জড়িত? যদি তাই হয়, random_int()
এবং ব্যবহার করুন array_keys()
। ( random_bytes()
কেবলমাত্র পিএইচপি 7, তবে পিএইচপি 5 এর জন্য একটি পলিফিল রয়েছে )।
function random_index(array $source)
{
$max = count($source) - 1;
$r = random_int(0, $max);
$k = array_keys($source);
return $k[$r];
}
ব্যবহার:
$array = [
'apple' => 1234,
'boy' => 2345,
'cat' => 3456,
'dog' => 4567,
'echo' => 5678,
'fortune' => 6789
];
$i = random_index($array);
var_dump([$i, $array[$i]]);
ডেমো: https://3v4l.org/1joB1
এলোমেলো কী প্রতিধ্বনি করতে র্যান্ডম নম্বর পেতে র্যান্ড () ব্যবহার করুন। প্রাক্তন: 0 - 3
$ran = array(1,2,3,4);
echo $ran[rand(0,3)];
অন মাছ ধরার নৌকা:
echo $array[array_rand($array,1)]
এটি ইন-লাইন অ্যারেগুলির সাথে দুর্দান্তভাবে কাজ করবে। এছাড়াও, আমি মনে করি কোনও ফাংশনে আবদ্ধ হওয়ার সময় জিনিসগুলি পরিপাটি এবং আরও পুনরায় ব্যবহারযোগ্য।
function array_rand_value($a) {
return $a[array_rand($a)];
}
ব্যবহার:
array_rand_value(array("a", "b", "c", "d"));
পিএইচপি <7.1.0 এ, array_rand()
ব্যবহার করে rand()
, তাই সুরক্ষা বা ক্রিপ্টোগ্রাফি সম্পর্কিত কোনও কিছুর জন্য আপনি এই ফাংশনটি চান না। পিএইচপি 7.1.0+ এ, যেহেতু এ্যালাইজড rand()
হয়েছেmt_rand()
সেহেতু উদ্বেগ ছাড়াই এই ফাংশনটি ব্যবহার করুন ।
আমি আমার উত্তরটি @ ইলাফুরওয়েজের কার্যকারিতাটি বন্ধ করে দিচ্ছি। আমি এটি ব্যবহার করার চেষ্টা করেছি তবে আমি যখন রিটার্ন অবজেক্টটি সংশোধন করার চেষ্টা করেছি তখন এটি রেফারেন্স ইস্যুতে চলছে। আমি তার ফাংশনটি পাস করে রেফারেন্স দিয়ে ফিরে যেতে আপডেট করেছি। নতুন ফাংশনটি হ'ল:
function &random_value(&$array, $default=null)
{
$k = mt_rand(0, count($array) - 1);
if (isset($array[$k])) {
return $array[$k];
} else {
return $default;
}
}
আরও প্রসঙ্গে, আমার প্রশ্নটি দেখুন / পাসওয়ার্ড অবজেক্ট + অবজেক্ট অব অবজেক্টের রেফারেন্সগুলি কাজ করছে না at
র্যান্ডম মান ফর্ম অ্যারে পাওয়ার সহজ উপায় ।
$color_array =["red","green","blue","light_orange"];
$color_array[rand(0,3)
এখন প্রতিবার আপনি অ্যারে থেকে বিভিন্ন রঙ পাবেন ।
আপনি নিম্নলিখিত হিসাবে একটি অ্যারের বাইরে একটি এলোমেলো নম্বর পান:
$randomValue = $rand[array_rand($rand,1)];
array_rand
এটি হওয়া উচিত হিসাবে এলোমেলো নয়