Php 仅在数组中使用一次规则

Php 仅在数组中使用一次规则,php,arrays,Php,Arrays,您好,我想知道如何做以下,因为我一直没有回答。所以我会尽量简化 我已经为关联数组设置了一些值 $vNArray ['Brandon'] = $item[3]; $vNArray['Smith']= $item[4]; $vNArray ['Johnson']= $item[5]; $vNArray ['Murphy']= $item[6]; $vNArray ['Lepsky']= $item[7]; foreach ($vNArray as $key => $value){ i

您好,我想知道如何做以下,因为我一直没有回答。所以我会尽量简化

我已经为关联数组设置了一些值

$vNArray ['Brandon']  = $item[3]; 
$vNArray['Smith']= $item[4]; 
$vNArray ['Johnson']= $item[5];
$vNArray ['Murphy']= $item[6];
$vNArray ['Lepsky']= $item[7];

foreach ($vNArray as $key => $value){

if(!empty($value)){
   $result  .= "\t\t\t\t<li><strong>$key</strong>"  .$value.   "</li>\n";
}
$vNArray['Brandon']=$item[3];
$vNArray['Smith']=$item[4];
$vNArray['Johnson']=$item[5];
$vNArray['Murphy']=$item[6];
$vNArray['Lepsky']=$item[7];
foreach($vNArray作为$key=>$value){
如果(!空($value)){
$result.=“\t\t\t
  • ”$value.
  • \n”; }
    但现在我想针对该数组中的特定值,因此这里是另一个数组:

    $display_id=array('Brandon', 'Murphy');
    
    foreach ($vNArray as $key => $value){
    if(!empty($value)){
       //Looks into the display_id array and renders it differently
       if (in_array($key, $display_id)) {
       $data .= "\t\t<li id=\"".$vNArray['Brandon']."\">".$vNArray['Murphy']."</li>\n";
    
    } else {
    $result .= "\t\t\t\t<li><strong>$key</strong>$value</li>\n";
    }
    
    $display\u id=array('Brandon','Murphy');
    foreach($vNArray作为$key=>$value){
    如果(!空($value)){
    //查看显示id数组并以不同方式渲染它
    if(在数组中($key$display\u id)){
    $data.=“\t\t
  • “$vNArray['Murphy']。”
  • \n”; }否则{ $result.=“\t\t\t
  • $key$value
  • \n”; }
    }

    第一个条件的结果是正确的,但对于两个in_数组值都是重复的:

    <li id="Brandon Value">Murphy Value</li>
    <li id="Brandon Value">Murphy Value</li>
    
    Murphy值
  • 墨菲价值
  • 以下是正确的:

    <li><strong>Smith</strong> Value of Smith</li>
    <li><strong>Smith</strong> Value of Johnson</li>
    <li><strong>Lepsky</strong> Value of Lepsky</li>
    
    史密斯的价值
  • 史密斯约翰逊的价值
  • LepskyLepsky的值
  • 如何根据数组的数量阻止它重复?

    $data.=“\t\t
  • “$vNArray['Murphy']。”
  • \n”;
    $data .= "\t\t<li id=\"".$vNArray['Brandon']."\">".$vNArray['Murphy']."</li>\n";
    
    您已经硬编码了vNArray键,因此无论匹配哪个名称,您总是输出相同的值

    $data .= "\t\t<li id=\"{$key}\">{$value}</li>\n";
    
    $data.=“\t\t
  • {$value}
  • \n”;
    相反


    不需要像现在这样进行字符串连接。PHP可以很好地将数组元素插入字符串中,并且不需要到处转义引号,这意味着要通读难看的代码。

    仔细查看循环

    您正在使用一个
    foreach
    循环,这意味着您每次都要遍历数组

    您的
    if(in_array(…)
    条件检查键是否在
    $display\u id
    数组中。对于Brandon和Murphy,这会发生两次

    当这种情况发生两次时,$data被附加两次,这意味着您将得到两次显示的结果

    我不确定这有什么帮助,但只要仔细看看你的循环就可以了。你能澄清一下你到底想要实现什么,或者你想要的输出是什么吗

    祝你好运

    编辑:

    我重读了你的问题,意识到了一件事——你只想让输出打印一次吗


    查看
    break
    语法。在将其附加到
    if
    条件后,添加一个
    break;
    ,这将打破循环打印它一次。

    感谢您的回复Foo,我需要硬编码ID,因为我希望在代码中的特定占位符中包含特定值。我试图用您的sy来定位这些IDntax,但它出现了一个错误。在你的第二点上,BREAK;解决方案似乎是一个很好的解决方案,但是当我在上面的else之前附加它时,它只会在第一个生成行处停止,并且在生成之后什么也没有出现。有什么想法吗?