所以我想将前5个链接中的5%流量发送到第4个链接中的每个链接,剩余的85%发送到第4个和最后一个(用“else”抓住)。我对兰特的射程是1,20。
从下面的代码中,为什么我只会看到当我回显clickref_url时返回的第3个(约15%的时间)或第4个(约85%的时间)链接,从不会看到每个应该获得的第1个或第2个链接5流量的百分比?
谢谢!谢谢!谢谢!
<?php
$rand = rand(1,20);
if ($rand == 1) {
/* Link1 */
$clickref_url = 'http://www.link1domain.com?var1='.$email.'&var2=mydomain';
$clickref_url.= '&firstname='.$firstname;
$clickref_url.= '&lastname='.$lastname;
$clickref_url.= '&email='.$email;
$clickref_url.= '&zipcode='.$zip;
}
if ($rand == 2) {
/* Link2 */
$clickref_url = 'http://www.link2domain.com?var1='.$email.'&var2=mydomain';
$clickref_url.= '&firstname='.$firstname;
$clickref_url.= '&lastname='.$lastname;
$clickref_url.= '&email='.$email;
$clickref_url.= '&zipcode='.$zip;
}
if ($rand == 3) {
/* Link3 */
$clickref_url = 'http://www.link3domain.com?var1='.$email.'&var2=mydomain';
$clickref_url.= '&firstname='.$firstname;
$clickref_url.= '&lastname='.$lastname;
$clickref_url.= '&email='.$email;
$clickref_url.= '&zipcode='.$zip;
} else {
/* Link4 */
$clickref_url = 'http://www.link4domain.com?var1='.$email.'&var2=mydomain';
$clickref_url.= '&firstname='.$firstname;
$clickref_url.= '&lastname='.$lastname;
$clickref_url.= '&email='.$email;
$clickref_url.= '&zipcode='.$zip;
}
?>
答案 0 :(得分:2)
因为你正在使用if
测试,其他3个/其他选项覆盖了前两个选项已经完成的任何测试
如果您的初始兰特为1,则会执行if (rand == 1)
的代码,也会执行else
的{{1}}部分代码
使用if (rand == 3) {...} else {...}
elseif
由于大多数代码行都会重复,因此将其简化为
$rand = rand(1,20);
if ($rand == 1) {
/* Link1 */
$clickref_url = 'http://www.link1domain.com?var1='.$email.'&var2=mydomain';
$clickref_url.= '&firstname='.$firstname;
$clickref_url.= '&lastname='.$lastname;
$clickref_url.= '&email='.$email;
$clickref_url.= '&zipcode='.$zip;
} elseif ($rand == 2) {
/* Link2 */
$clickref_url = 'http://www.link2domain.com?var1='.$email.'&var2=mydomain';
$clickref_url.= '&firstname='.$firstname;
$clickref_url.= '&lastname='.$lastname;
$clickref_url.= '&email='.$email;
$clickref_url.= '&zipcode='.$zip;
}elseif ($rand == 3) {
/* Link3 */
$clickref_url = 'http://www.link3domain.com?var1='.$email.'&var2=mydomain';
$clickref_url.= '&firstname='.$firstname;
$clickref_url.= '&lastname='.$lastname;
$clickref_url.= '&email='.$email;
$clickref_url.= '&zipcode='.$zip;
} else {
/* Link4 */
$clickref_url = 'http://www.link4domain.com?var1='.$email.'&var2=mydomain';
$clickref_url.= '&firstname='.$firstname;
$clickref_url.= '&lastname='.$lastname;
$clickref_url.= '&email='.$email;
$clickref_url.= '&zipcode='.$zip;
}
答案 1 :(得分:0)
为什么不把它们放在一个数组中: -
$urls[1] = "http://www.link1domain.com?var1=$email&var2=mydomain&firstname=$firstname&lastname=$lastname&email=$email&zipcode=$zip";
$urls[2] = "http://www.link2domain.com?var2=$email&var2=mydomain&firstname=$firstname&lastname=$lastname&email=$email&zipcode=$zip";
$count = count($urls);
$index = rand(1,100);
if ($index > $count) { $index = $count; }
$clickref_url = $urls[$index];
我只展示了两个,但很容易添加更多。
还有一种更简单的方法来连接字符串!