我这里有一个简单的代码:
$rand = mt_rand(100000, 999999);
$sid = array(
":sponsorID" => $rand
);
$accounts = $db->select("accounts", "sponsorID = :sponsorID", $sid);
while (count($accounts) > 0) {
$new = mt_rand(100000, 999999);
}
echo $new;
它基本上做的是检查$rand
中生成的数字是否已经存在于数据库中,并将设置$new
变量。我的问题是,当我回显$new
时,我总是得到该变量的undefined index
。如何在while循环之外调用该变量?
答案 0 :(得分:3)
你只是在循环中定义$new
,所以它在它之外是未定义的。只需在循环之前声明它就可以了:
$new = NULL;
while (count($accounts) > 0) {
$new = mt_rand(100000, 999999);
}
echo $new;
答案 1 :(得分:1)
您的代码存在一些问题。这是一个修改版本,可以输出您要查找的内容:
<?php
$sid = array(
":sponsorID" => $rand
);
$accounts = $db->select("accounts", "sponsorID = :sponsorID", $sid);
$new = null;
do {
$new = mt_rand(100000, 999999);
} while (in_array($new, array_column($accounts, 'sponsorId')));
echo $new;
注意:由于array_column()
调用,这至少需要php 5.5。但这使得代码简单易懂。