2011-02-25 5 views
0

안녕하세요 저는 답변없이 돌아 다니면서 다음을 수행하는 방법을 궁금합니다. 그래서 나는 최대한 많이 단순화하려고 노력할 것입니다.in_array를 사용하여 규칙을 한 번만 적용하십시오.

내가 연관 배열

$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"; 
} 

하지만 지금은 그래서 여기에 해당 배열 내의 특정 값을 대상으로 할 몇 가지 값을 설정 한 또 다른 배열 :

$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"; 
} 

}

첫 번째 조건에 대한 결과는 정확하지만 두 in_array 값에 대해 반복됩니다.

다음은

가 정확한지 :

<li><strong>Smith</strong> Value of Smith</li> 
<li><strong>Smith</strong> Value of Johnson</li> 
<li><strong>Lepsky</strong> Value of Lepsky</li> 

나는 배열의 수에 따라 반복에서 어떻게 중지합니까?

답변

1
$data .= "\t\t<li id=\"".$vNArray['Brandon']."\">".$vNArray['Murphy']."</li>\n"; 

일치하는 이름에 관계없이 항상 동일한 값을 출력하도록 vNArray 키를 하드 코드했습니다. 원하는 값은

$data .= "\t\t<li id=\"{$key}\">{$value}</li>\n"; 

입니다.

문자열 연결을 그대로 할 필요는 없습니다. PHP는 배열 요소를 문자열에 멋지게 삽입 할 수 있으며, 어디에서나 따옴표를 이스케이프 할 필요가 없으므로 추악한 코드를 통해 읽을 수 있습니다.

0

루프를 신중하게 살펴보십시오.

foreach 루프를 사용하고 있습니다. 즉, 매번 배열을 통과한다는 의미입니다.

if(in_array(...)) 조건은 키가 $display_id 배열에 있는지 확인합니다. 그것은 Brandon과 Murphy에게 두 번 일어납니다.

이 조건이 두 번 발생하면 $ 데이터가 두 번 추가되어 결과가 두 번 표시됩니다.

이게 무슨 도움이되는지 잘 모르겠지만 루프를 신중하게 살펴보십시오. 당신이 정확히 무엇을 달성하려고하는지 또는 원하는 출력이 무엇인지 명확히 할 수 있습니까?

행운을 빈다.

편집 :

나는 질문을 다시 읽고 뭔가를 깨달았다 - 당신은 당신의 출력을 한 번에 인쇄 할 수 있습니까?

break 구문을 살펴보십시오. if 조건에 추가 한 후 break;을 추가하면 루프에서 한 번 인쇄가 중단됩니다.

+0

답장을 보내 주셔서 감사합니다. 코드의 특정 자리 표시 자에 특정 값을 지정하기 때문에 ID를 하드 코딩해야합니다. 나는 그 신분증을 당신의 신텍스로 표적화하려고 시도했으나 오류가 떠올랐다.두 번째 요점은 BREAK; 솔루션은 화려한 하나 인 것 같습니다. 그러나 위의 else 앞에 추가하면 첫 번째 생성 된 라인에서 멈추고 생성 된 라인에는 아무것도 표시되지 않습니다. 어떤 아이디어? – HGB