Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用array_rand从合并数组中获取单个数字_Php_Arrays - Fatal编程技术网

Php 使用array_rand从合并数组中获取单个数字

Php 使用array_rand从合并数组中获取单个数字,php,arrays,Php,Arrays,我想从一个数组中随机选择一个数字,但它确实显示了不是从我选择的数组中选择的其他数字 <?php $MainArray = array( 'IC' => array(4,19,22,42,61,80,82,88), 'IR' => array(9,12,17,45,46,67,68,89), 'JP' => array(6,26,39,53,93), 'DP' => array(1,8,14,35,38,59,70,71), '

我想从一个数组中随机选择一个数字,但它确实显示了不是从我选择的数组中选择的其他数字

<?php
$MainArray = array(
    'IC' => array(4,19,22,42,61,80,82,88),
    'IR' => array(9,12,17,45,46,67,68,89),
    'JP' => array(6,26,39,53,93),
    'DP' => array(1,8,14,35,38,59,70,71),
    'TA' => array(0,2,3,5,7,10,11,13,15,16,18,20,21,23,24,25,27,28,29,30,31,32,33,34,36,37,40,41,43,44,47,48,49,50,51,52,54,55,56,57,58,60,62,63,64,64,66,69,72,73,74,75,76,77,78,79,81,83,84,85,86,87,90,91,92,94,95,96,97,98,99)
);
$ArrayNumbers = array_merge($MainArray['IC'], $MainArray['IR'], $MainArray['TA'], $MainArray['DP']);
$setSelectedNumber = array_rand($ArrayNumbers);
if(in_array($setSelectedNumber, $MainArray['JP'])){
    echo 'ERROR FOUND: '.$setSelectedNumber;
}else{
    echo $setSelectedNumber;
}
?>

我希望从合并的数组中随机得到一个匹配的数字,但它也显示了
JP
数组
6,26,39,53,93
中的数字,这是我不想要的

返回随机选取的键,而不是值。您可以通过此键获取值,如下所示:

$setSelectedNumber = $ArrayNumbers[array_rand($ArrayNumbers)];

亚历克斯的回答是对的。另一种可能的解决方案是使用rand和数组长度获取随机密钥:

<?php
$MainArray = array(
 'IC' => array(4,19,22,42,61,80,82,88),
 'IR' => array(9,12,17,45,46,67,68,89),
 'JP' => array(6,26,39,53,93),
 'DP' => array(1,8,14,35,38,59,70,71),
 'TA' => array(0,2,3,5,7,10,11,13,15,16,18,20,21,23,24,25,27,28,29,30,31,32,33,34,36,37,40,41,43,44,47,48,49,50,51,52,54,55,56,57,58,60,62,63,64,64,66,69,72,73,74,75,76,77,78,79,81,83,84,85,86,87,90,91,92,94,95,96,97,98,99)
 );
 $ArrayNumbers = array_merge($MainArray['IC'], $MainArray['IR'], $MainArray['TA'], $MainArray['DP']);

 // select a random key of the array
 $randomKey = rand(0, count($ArrayNumbers) - 1)
 // Here you have a random Element
 $setSelectedNumber = $ArrayNumbers[$randomKey];


 if(in_array($setSelectedNumber, $MainArray['JP'])){
  echo 'ERROR FOUND: '.$setSelectedNumber;
 }else{
   echo $setSelectedNumber;
 }
 ?>


快乐编码

您的意思是不想从
$MainArray['JP']
输出一个数字,并且不介意
错误
,还是希望完全避免
错误
,并始终获得成功的结果?如果不需要,为什么要将该数组合并到主数组中?你的代码的目的是什么?可能重复@mickmackusa我可以随时更改合并,具体取决于我想如何使用它