从foreach循环输出中排除值
问题描述:
我期望从foreach
输出中排除特定值,其输出发生在friend_one
或friend_two
。我不想从我的查询中排除这个。从foreach循环输出中排除值
排除它在任一friend_one
或friend_two
发生将是$profile_user
参数。我试图做到这一点if(in_array($friend_total_row->friend_one == $profile_user))
,但我得到它的错误,再加上它只有friend_one
在它。
任何人都有一个想法,我可以做到这一点?
<?php
//Friends --- total
$friend_status = 2;
$friend_sql = "
SELECT *
FROM friends
WHERE (friend_one = :profile_user or friend_two = :profile_user)
AND status = :total_status
";
$friend_stmt = $con->prepare($friend_sql);
$friend_stmt->execute(array(':profile_user' => $profile_user, ':total_status' => $friend_status));
$friend_total_rows = $friend_stmt->fetchAll(PDO::FETCH_ASSOC);
$count_total_friend = $friend_stmt->rowCount();
?>
<div id="friend-list-container">
<div id="friend-list-count">Friends <span class="light-gray"><?php echo $count_total_friend; ?></span></div>
<div id="friend-list-image-container">
<?php
foreach ($friend_total_rows as $friend_total_row) {
if(in_array($friend_total_row->friend_one == $profile_user)) {
continue;
}
else {
$friend_1 = $friend_total_row['friend_one'];
$friend_2 = $friend_total_row['friend_two'];
//$friend_status = $friend_total_row['status'];
//$friend_status_date = $friend_total_row['date'];
}
echo $friend_1 . $friend_2;
}
?>
答
更新答案:
foreach ($friend_total_rows as $friend_total_row) {
$friend_1 = $friend_total_row['friend_one'];
$friend_2 = $friend_total_row['friend_two'];
if($friend_1 !== $profile_user) {
echo $friend_1;
}
if($friend_2 !== $profile_user) {
echo $friend_2;
}
}
此行'如果(in_array($ friend_total_row-> friend_one == $ profile_user))'是错误的。你必须用逗号分隔,而不是两个等号。 http://php.net/manual/en/function.in-array.php – 2016-11-28 20:13:26
只是问为什么你不想在查询中排除这个。另外,在目前的设置下,你会得到好友所描述的实例上的重复行,这是你期望的吗? – nerdlyist
@nerdlyist我不想从查询中排除,因为查询是匹配关系。 IE:如果个人资料用户与另一个用户在同一记录中,那就是友谊。在这个输出中,我想排除个人资料用户只显示他们的朋友。 – Paul