繁体   English   中英

如何在循环内的if else语句中更改数组值?

[英]how can i change the array value from if else statement inside a loop?

我已经花了几个小时试图在数组中赋值,但是每次迭代时数组都设置为0,我不明白为什么,这是代码...

$AurQ = array();
$prod = '';
while ($NOTIFY = $notification->fetch_assoc()) {
    print_r($AurQ);
    if ($NOTIFY['notification_type_ID'] == 1) {
        if (in_array($NOTIFY['qID'], $AurQ, true)) {
            echo "exist";
            continue;
        } else {
            $AurQ[] = $NOTIFY['qID']; // Adding the value to the array
            $prod .= '<li><a href="http://localhost/website/link/' . $NOTIFY['qID'] . '">    <span class="AskIcon"></span><span class="noti_announce">';
            $prod .= '<span class="unB">' . $NOTIFY['first_name'] . ' ' . $NOTIFY['last_name'] . '</span> ' . $NOTIFY['notify_name_en'] . ' "' . $NOTIFY['q_title'] . '"</span>';
            $prod .= '<span class="noti_time"><span class="icon"></span>' . time_elapsed_string($NOTIFY['time']) . '</span></a></li>';
        } // end of if doesn't exist in Array List
    } //end of if
} // end of loop

问题似乎是,仅在检查值是否已存在于数组中之后才将值推入数组,这并不意味着您将其初始化为位于数组上方的空数组。

因此,这里存在一个逻辑错误,根据您要执行的操作,可以通过移动$AurQ[] = $NOTIFY['qID'] ; 行到else语句中,或将if语句从if (in_array($NOTIFY['qID'], $AurQ, true)) {更改为if (!in_array($NOTIFY['qID'], $AurQ, true)) {

正如您没有提到的那样,当您不想让事物显示时出现问题,我假设您正在寻找的是前一种解决方案,而不是后者。 因此,您的代码最终看起来像这样:

$AurQ = array();
$prod ='';
while($NOTIFY = $notification->fetch_assoc()) {
if ($NOTIFY['notification_type_ID'] == 1) {
    if (in_array($NOTIFY['qID'], $AurQ, true)){ //If it's ALREADY in the array
        echo "exist";
        continue;
    } else { //Otherwise we need to add it, and display it
        $AurQ[] = $NOTIFY['qID'] ; // Adding the value to the array
        $prod .= '<li><a href="http://localhost/website/link/'.$NOTIFY['qID'].'">    <span class="AskIcon"></span><span class="noti_announce">';
        $prod .= '<span class="unB">'.$NOTIFY['first_name'].' '.$NOTIFY['last_name'].'</span> '.$NOTIFY['notify_name_en'].' "'.$NOTIFY['q_title'].'"</span>';
        $prod .= '<span class="noti_time"><span class="icon"></span>'.time_elapsed_string($NOTIFY['time']).'</span></a></li>';
    }// end of if doesn't exist in Array List

}//end of if
} // end of loop

给定您的代码,您只需要移动$AurQ[] = $NOTIFY['qID']; 否则阻止。

当前, $AurQ[]为空,并且如果block永远不会运行,因为in_array($NOTIFY['qID'], $AurQ, true)将始终返回false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM