尝试编写一个带有数组的简单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的新手。谢谢!
答案 0 :(得分: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
答案 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语句有两个问题:
您使用===
运算符,它执行严格的类型检查。引号中的'2'
是一个字符串,它不是一个整数,因此您无法将其与count
的结果进行比较,这是一个整数,至少在期望有用结果时不会。字符串永远不会严格等于整数。这将永远改为false
,因此请删除引号,或使用==
运算符。
您编写count... == '2' || '4'
,其中正确的语法为count... == '2' || count... == '4'
。在第一种情况下,您基本上会说“count == '2'
或'4'
(或两者)必须为true
”。语句'4'
始终评估为true
。所以你有something || true
,它也总是评估为true
。