2011-12-28 7 views
0

내 출력은 한 가지 예외를 제외하고는 완벽하게 작동합니다. 사람들 중 일부는 전화 번호가 없기 때문에 포함시키지 않을 것입니다. 헤더 번호 (전화 번호)를 입력하십시오. 출력을 위해이 문제가 해결되었습니다. 나는 전화 주위에 foreach를 감싸는 것을 시도했다. 그러나 물론 그것은 각 사람 기록 그룹을 위해 반복했다. 전화 번호와 어떤 사람이 있는지 확인CakePHP/PHP : 배열에 현재 레코드에 대한 빈 전화 값이있는 경우

<table> 
<tr> 
<th>Name</th> 
<th>Email</th> 
<th>Phone</th> <!-- This <th> should not display if all phone numbers are empty. --> 
</tr> 
<?php foreach ($persons as $person) : ?> 
<tr> 
<td><?php $person['name']; ?></td> 
<td><?php $person['email']; ?></td> 
<?php if($person['phone'] != '') { ?> // removes column box if there is no phone number. 
<td><?php $person['phone']; ?></td> 
<?php } ?> 
사전에 배열을

+0

이 명확를 들어, 테이블 헤더를 포함하지 않을 *없는 전화 번호는 전체 열 것인지 비어 있니? – deceze

+0

수정하십시오. 나는 나머지 신청서를 보여주지 않을 것이다. 하지만 회사 목록이있어 사람들이 회사에 있으므로 회사를 선택하면 회사의 사람들 목록이 표시됩니다. 전화 번호가있는 레코드가없는 경우 전화가 표시되지 않아야하며 회사 전화 번호가 하나 인 경우 머리글이 표시되어야합니다. 희망이 명확하게 도움이됩니다. – OldWest

+0

예를 들어 전화 번호가없는 경우 전화 번호부에 및 섹션이 표시되지 않아야합니다. 섹션이 해결되었지만 이 문제가되었습니다. 하나의 전화 번호가있는 경우 이 표시되어야합니다. – OldWest

답변

2
 

<?php 
    $countEle = count($persons); 
    $count = 0; 
    foreach($persons as $person) { 
    if(empty($person['phone'])) { 
     $count++; 
    } 
    } 
    //then you could check as 
?> 
<?php if($count < $countEle) { ?> 
<th>Phone</th> 
<?php } ?> 

 
1

그냥 루프는 다음 조건에서 그것을 사용합니다. 여기 5.3+ PHP에 대한 한 줄의 : 사용자의 * 즉, 사용할 수있는 경우

<?php $hasPhone = array_reduce($persons, function ($hasPhone, $person) { return $hasPhone || $person['phone']; }, false); ?> 

<table> 
<tr> 
    ... 
    <?php if ($hasPhone) : ?> 
    <th>Phone</th> 
    <?php endif; ?> 
</tr> 
<?php foreach ($persons as $person) : ?> 
    .. 
    <?php if ($person['phone']) : ?> 
    <td><?php $person['phone']; ?></td> 
    <?php endif; ?> 
<?php endforeach; ?> 
관련 문제