Zend Php Foreach循环数组
我有一个输入字段和数据库表中的一个电子邮件数组。Zend Php Foreach循环数组
我正在比较输入字段与数组的相似性。
但一些如何,我坚持循环。
该循环检查是否将每个电子邮件与输入字段进行比较?
它总是带给我到google.com,不管是什么我输入相同或不
这里是从控制器代码:
if (isset($_POST['btn_free_download']))
{
// Get current input email from input field
$email = $this->getRequest()->getParam('email');
// Get all emails from the user
$referred_users = $this->_helper->user()->getReferredUsers()->toArray();
// Check the similarity which it with a loop
foreach ($referred_users as $referred_user)
{
similar_text($email, $referred_user['email'], $similar);
}
// If yes, Pop up message or redirect to some page
if ($similar < 97)
{
$this->_redirect('http://google.com');
}
// If not, redirect user to free download page
else
{
$this->_redirect('http://yahoo.com');
}
}
我认为你需要检查manual。 Foreach函数在zend或任何其他框架或纯PHP上使用它都是一样的。
$referred_users = $this->_helper->user()->getReferredUsers()->toArray();
$ referred_users可能会从表中 用户保持电子邮件的数组,说:
$referred_users = array("[email protected]", "[email protected]", "[email protected]")
那么当你使用foreach循环将通过每个迭代 阵列中的电子邮件
foreach ($referred_users as $referred_user)
{
// for the first loop $referred_user = [email protected], for second time $referred_user = [email protected] and goes on
similar_text($email, $referred_user['email'], $similar);
}
现在让我们在这里讨论的逻辑:
// If yes, Pop up message or redirect to some page
if ($similar < 97)
{
$this->_redirect('http://google.com');
}
// If not, redirect user to free download page
else
{
$this->_redirect('http://yahoo.com');
}
之前,除非在数组$ referred_users的最后一个元素是完全等于你的$电子邮件
i.e. $email = "[email protected]"
你会总是给予$类似的结果小于97%,这意味着你将被重定向到谷歌。
我认为你没有尝试去做,可能不熟悉foreach函数,这就是为什么你没有得到预期的结果。
假设你试图做类似的事情,检查数组中的电子邮件是否与数组中的任何电子邮件匹配(如果数组是从表中检查从param输入的电子邮件是否等于任何电子邮件表),然后重定向到某处或显示一些消息,继续进行。以下解决方案可能对您有所帮助。
$similarText = false;
foreach ($referred_users as $referred_user)
{
// for the first loop $referred_user = [email protected], for second time $referred_user = [email protected] and goes on
similar_text($email, $referred_user['email'], $similar);
if ($similar > 97) {
$similarText = true;
break;
}
}
// If yes, Pop up message or redirect to some page
if ($similarText)
{
$this->_redirect('http://google.com');
}
// If not, redirect user to free download page
else
{
$this->_redirect('http://yahoo.com');
}
希望你有想法。但请在将来发布问题之前查看手册。
谢谢,我会尝试像你说的,看看它是否有效。对于迟到的回复感到抱歉... –
而且是我想要的,检查是否有任何电子邮件匹配的数组中,如果其中一个匹配的数组中的第一个将退出。 –
不客气。 –
您已声明$ referenced_users,但是随后您使用$ this-> referenced_users启动循环。这应该是同一个变量。 – Martin
function similar_text是做什么用的?最初什么是$类似的? – Dylan
@Dylan http://php.net/manual/en/function.similar-text.php检查手册,$ similar是作为第三个参数传入的相似文本的百分比,similar_text()将计算你的百分比相似性。 –