PHP数组计数 - IF / Elseif

时间:2013-09-12 19:26:43

标签: php html wordpress if-statement

尝试编写一个带有数组的简单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的新手。谢谢!

3 个答案:

答案 0 :(得分:3)

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

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

当计数为2时,

if (count($array) == 2)确实足够了。

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

if (count($array) == 2 || count($array) == 4)如果某事发生在两个或四个上。

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

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

答案 1 :(得分:2)

这有两个问题:

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

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

其次,if语句的第二部分将始终解析为true。这是有效的:

if ('3') {

您正在检查字符串文字“3”是否为真; documentation for type casting显示PHP将转换为'false',并且任何值为0的字符串都将为真。

您需要将if语句写为:

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

答案 2 :(得分:1)

if语句有两个问题:

  1. 您使用===运算符,它执行严格的类型检查。引号中的'2'是一个字符串,它不是一个整数,因此您无法将其与count的结果进行比较,这是一个整数,至少在期望有用结果时不会。字符串永远不会严格等于整数。这将永远改为false,因此请删除引号,或使用==运算符。

  2. 您编写count... == '2' || '4',其中正确的语法为count... == '2' || count... == '4'。在第一种情况下,您基本上会说“count == '2''4'(或两者)必须为true”。语句'4'始终评估为true。所以你有something || true,它也总是评估为true