限定数组随机取值的范围

我大卫 发布于 2016/01/06 18:56
阅读 141
收藏 0
PHP

@boot2later 你好,想跟你请教个问题:感谢您的热心回复。求教如果进一步想缩小随机取值的范围, 比如限定type为2,随机选一个新链接的值该如何写呢?麻烦您了,多谢多谢。

<?php
$seturl=array(
  'type' => 
  array (
    0 => '2',
    1 => '2',
    3 => '1',
  ),
  'oldurl' => 
  array (
    0 => 'www.jd1.com',
    1 => 'www.jd2.com',
    3 => 'www.jd3.com',
  ),
  'newurl' => 
  array (
    0 => 'www.jd1new.com',
    1 => 'www.jd2new.com',
    3 => 'www.jd3new.com',
  ),
);
 
// ## [1]随机选一个新链接的值   谢谢boot2later
$key_i=$key_i_j='';
$key_i_j=array_rand($seturl['newurl'], 1);
printf("[1] seturl.newurl.%s=%s", $key_i_j, $seturl['newurl'][$key_i_j]);
echo PHP_EOL;

加载中
0
boot2later
boot2later
有个前提,
如果二维数组中array['type'], array['oldurl']和array['newurl']中的key(0, 1, 3)和值是一一对应的
那么下面的表关系成立:
_id key type oldurl newurl
0 0 2 www.jd1.com www.jd1new.com
1 1 2 www.jd2.com www.jd2new.com
2 3 1 www.jd3.com www.jd3new.com
## [随机过程]随机选一个新链接的值,要求对应的type为2
1. 取一个随机key_i_j
2. 判断一下key_i_j对应的type值是否是2. 如果type==2 跳到步骤3; type值不符合筛选条件的 跳到步骤1
3. 结果就是key_i_j对应的值

## [php代码]随机选一个新链接的值,要求对应的type为2
<?php
$seturl=array(
  'type' => 
  array (
    0 => '2',
    1 => '2',
    3 => '1',
  ),
  'oldurl' => 
  array (
    0 => 'www.jd1.com',
    1 => 'www.jd2.com',
    3 => 'www.jd3.com',
  ),
  'newurl' => 
  array (
    0 => 'www.jd1new.com',
    1 => 'www.jd2new.com',
    3 => 'www.jd3new.com',
  ),
);

// ## [1]随机选一个新链接的值,其对应的type值为2
while (true) {
  $key_i_j='';
  // 1. 取一个随机key_i_j
  $key_i_j=array_rand($seturl['newurl'], 1);
  // 2. 判断一下key_i_j对应的type值是否是2. 
  if('2' == $seturl['type'][$key_i_j]){
    // 2.0 如果type==2 跳到步骤3; 
    break;
  }else{
    // 2.1 如果type值不符合筛选条件的 跳到步骤1
    continue;
  }
}
// 3. 结果就是key_i_j对应的值
printf("[1] seturl.newurl.%s=%s", $key_i_j, $seturl['newurl'][$key_i_j]);
echo PHP_EOL;




我大卫
我大卫
好热心的大牛!感动 谢谢啦
返回顶部
顶部