CakePHP / PHP: удалить <th>, если в массиве есть пустые значения телефона для текущей записи - PullRequest
0 голосов
/ 28 декабря 2011

Мой вывод работает отлично, за одним исключением: у некоторых людей нет номера телефона, и я не хочу включать этот заголовок (Телефон), если номер телефона не доступен.Я решил это для вывода.Я попытался обернуть foreach вокруг Phone, но, конечно, это повторяло для каждой группы записей человека.

<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 } ?>

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

<?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 голос
/ 28 декабря 2011

Просто зациклите массив заранее, проверяя, есть ли любой человек с номером телефона, затем используйте это в условии.Вот одна строка для PHP 5.3 +:

<?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; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...