0

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

4

3 回答 3

3

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

于 2013-09-12T19:28:43.107 回答
2

这有两个问题:

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

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

其次,声明的第二部分if将始终解析为 true。它是有效的:

if ('3') {

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

您需要将 if 语句编写为:

if (count($users) == 1 || count($users) == 3) {
于 2013-09-12T19:30:52.243 回答
1

您的 if 语句有两个问题:

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

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

于 2013-09-12T19:36:19.223 回答