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>
史密斯的价值
$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之前附加它时,它只会在第一个生成行处停止,并且在生成之后什么也没有出现。有什么想法吗?