PHP - 在foreach

时间:2015-07-04 05:38:41

标签: php html arrays

我有两个阵列:

$arrInfoComment; 

数组包含注释用户的ID和注释。 (例如:2条评论)

$arrInfoExpert;

Array包含用户ID。 (3位用户)

我用foreach循环数组并将它们打印出来。 如果用户没有评论,我如何设置空<td>-</td>

$expComm = '';
foreach($arrInfoComment as $comExperts){
    foreach($arrInfoExpert as $ExpertID){
        if($comExperts['ID'] == $ExpertID){
            $expComm .= '<td><p>'.$comExperts['COMMENT'].'</p></td>';
        }
    }
}
echo $expComm;

$ arrInfoComment的结构

Array
(
    [0] => Array
        (
            [ID] => 5
            [COMMENT] => Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vestibulum elementum libero, at laoreet risus sodales at. .
        )
    [1] => Array
        (
            [ID] => 3
            [COMMENT] => Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam vestibulum elementum libero, at laoreet risus sodales at. .
        )
)

$ arrInfoExpert的结构

Array
(
    [0] => 5
    [1] => 3
    [2] => 4
)

附上我想要实现的最后结果的截图。 enter image description here 感谢。

3 个答案:

答案 0 :(得分:0)

试试这个

 $expComm .= '<td><p>'.(!empty($comExperts['COMMENT']) ? $comExperts['COMMENT'] : '-').'</p></td>';

你可以使用三元运算符,如果注释为空则打印' - '否则注释

答案 1 :(得分:0)

使用此

foreach($arrInfoComment as $comExperts)
    {
        foreach($arrInfoExpert as $ExpertID)
        {
            if($comExperts['ID'] == $ExpertID)
            {
                if(empty($comExperts['COMMENT']))
                {
                    $expComm .= '<td><p> &mdash; </p></td>';
                }
                else
                {
                    $expComm .= '<td><p>'.$comExperts['COMMENT'].'</p></td>';
                }
            }
        }
    }
    echo $expComm;

答案 2 :(得分:0)

我现在看到了这个问题。你应该翻转foreach循环的顺序。首先循环专家然后循环评论。

试试这个?

$expComm = '';
foreach($arrInfoExpert as $expertID){
    $comment = '-';
    foreach($arrInfoComment as $comExperts){
        if ($comExperts['ID'] == $expertID){
            $comment = '<p>'.$comExperts['COMMENT'].</p>;
            break;
        }
    }
    $expComm .= "<td>$comment</td>";
}