PHP 数组计数 - IF/elseif


PHP Array Count - IF/Elseif

尝试编写一个简单的PHP函数,该函数接受一个数组,然后根据数组的数量吐出某些代码。在我的测试用例中,两个用户,第一个if发生了,而第二个用户应该发生。

下面是代码:

我认为问题在于这些:

if (count($users) == '1' || '3') {

if (count($users) == '2' || '4') {

但我不确定!

  <?php
    $template_directory = get_template_directory_uri();
    $users = get_users();
    if (count($users) == '1' || '3') {
      foreach ($users as $user) {
        if ($user->displayname != '') {
          echo '<div class="col-lg-4 col-md-4 col-sm-4">';
            echo '<div class="selection-member">';
              echo '<div class="individual-pic">'.get_avatar($user).'</div>';
              echo '<h4 class="selection-name">' .$user->displayname. '</h5>';
              echo '<h5 class="grey-tagline">'.$user->jobtitle.'</h5>';
              echo '<div class="selection-text quick-center">';
                echo '<p>' . $user->desc . '</p>';
              echo '</div> <!-- end selection-text -->';
              echo '<div class="team-twitter">';
                echo '<a href="http://twitter.com/'.$user->twitter.'"><svg width="36" height="36">';
                  echo '<image xlink:href="'.get_template_directory_uri().'/images/team-twitter.svg" src="'.get_template_directory_uri().'/images/team-twitter.png" width="36" height="36"/>';
                echo '</svg></a>';
              echo '</div> <!-- end team-twitter -->';
            echo '</div> <!-- end selection-member -->';
          echo '</div> <!-- end col-lg-4 -->';
        }
      }
    }
    elseif (count($users) == '2' || '4') {
      foreach ($users as $user) {
        if ($user->displayname != '') {
          echo '<div class="col-lg-4 col-lg-offset-1 col-md-6 col-sm-6">';
            echo '<div class="selection-member">';
              echo '<div class="individual-pic">'.get_avatar($user).'</div>';
              echo '<h4 class="selection-name">' .$user->displayname. '</h5>';
              echo '<h5 class="grey-tagline">'.$user->jobtitle.'</h5>';
              echo '<div class="selection-text quick-center">';
                echo '<p>' . $user->desc . '</p>';
              echo '</div> <!-- end selection-text -->';
              echo '<div class="team-twitter">';
                echo '<a href="http://twitter.com/'.$user->twitter.'"><svg width="36" height="36">';
                  echo '<image xlink:href="'.get_template_directory_uri().'/images/team-twitter.svg" src="'.get_template_directory_uri().'/images/team-twitter.png" width="36" height="36"/>';
                echo '</svg></a>';
              echo '</div> <!-- end team-twitter -->';
            echo '</div> <!-- end selection-member -->';
          echo '</div> <!-- end col-lg-4 -->';
          echo '<div class="col-lg-1"></div>';
        }
      }
    } 
  ?>

谢谢!

编辑:非常感谢大家。我是PHP的新手。谢谢!

数组的count()始终是整数。

但是你把它与字符串进行了比较。你这样做是用严格的比较===.这根本行不通。

if (count($array) == 2)真的足以在计数为二时采取行动。

第二个问题:如果要将计数与两个值进行比较,则必须编写两个比较,或者使用不同的构造。

if (count($array) == 2 || count($array) == 4)是否应该在两个或四个上发生什么事情。

if (in_array(count($array), array(2, 4)))是更复杂的版本,可以扩展到任意数量的值。

或者,您可以使用switch . http://de2.php.net/manual/en/control-structures.switch.php

这有两点问题:

if (count($users) === '1' || '3') {

首先,您将$users与包含1的字符串进行比较 - 这就是单引号的含义。因为您使用的是 === ,它还比较了类型,这意味着您不会获得匹配项。

其次,if语句的第二部分将始终解析为真。它有效地:

if ('3') {

您正在检查字符串文字"3"是否为真;类型转换的文档显示了 PHP 将转换为"false"的内容,并且具有 0 以外的任何值的字符串都将为 true。

您需要将 if 语句编写为:

if (count($users) == 1 || count($users) == 3) {

你的 if 语句有两个问题:

  1. 您可以使用 === 运算符,该运算符执行严格的类型检查。 引号中的'2'是一个字符串,它根本不是一个整数,所以你不能将它与 count 的结果进行比较,这是一个整数,至少在期待有用的结果时不能。字符串从不严格等于整数。这将始终评估false,因此请删除引号,或使用==运算符。

  2. 您在count... == '2' || count... == '4'正确语法的地方编写count... == '2' || '4'。在第一种情况下,你基本上说"要么count == '2'要么'4'(或两者)必须true"。语句'4'始终计算为 true 。所以你有 something || true ,它也总是计算为 true .