尝试编写一个简单的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 语句有两个问题:
-
您可以使用
===
运算符,该运算符执行严格的类型检查。 引号中的'2'
是一个字符串,它根本不是一个整数,所以你不能将它与count
的结果进行比较,这是一个整数,至少在期待有用的结果时不能。字符串从不严格等于整数。这将始终评估false
,因此请删除引号,或使用==
运算符。 -
您在
count... == '2' || count... == '4'
正确语法的地方编写count... == '2' || '4'
。在第一种情况下,你基本上说"要么count == '2'
要么'4'
(或两者)必须true
"。语句'4'
始终计算为true
。所以你有something || true
,它也总是计算为true
.