[英]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.