Php 如果计数(数据)低于或等于4,则打印一个或两个-不工作
我需要一些帮助来思考。我有这个代码来计算预测条件的正确数量,即4<代码>(计数($condition)-1)=4,!=4、<4等) 我怎样才能让它正常工作 提前谢谢 编辑 以下是循环:Php 如果计数(数据)低于或等于4,则打印一个或两个-不工作,php,if-statement,Php,If Statement,我需要一些帮助来思考。我有这个代码来计算预测条件的正确数量,即4(计数($condition)-1)=4,!=4、
foreach($whome_answer[weather][forecast_conditions] AS $condition) {
# KONTROLL
if(utf8_decode($condition['day_of_week']['@attributes']['data']) == 'mån') {
$day = 'måndag';
# KONTROLL
} elseif(utf8_decode($condition['day_of_week']['@attributes']['data']) == 'tis') {
$day = 'tisdag';
# KONTROLL
} elseif(utf8_decode($condition['day_of_week']['@attributes']['data']) == 'ons') {
$day = 'onsdag';
# KONTROLL
} elseif(utf8_decode($condition['day_of_week']['@attributes']['data']) == 'tors') {
$day = 'torsdag';
# KONTROLL
} elseif(utf8_decode($condition['day_of_week']['@attributes']['data']) == 'fre') {
$day = 'fredag';
# KONTROLL
} elseif(utf8_decode($condition['day_of_week']['@attributes']['data']) == 'lör') {
$day = 'lördag';
# KONTROLL
} elseif(utf8_decode($condition['day_of_week']['@attributes']['data']) == 'sön') {
$day = 'söndag';
}
echo '<a href="javascript:void(0)" class="forecast-link">';
echo $day;
echo '</a>';
echo (count($condition) -1) <= 4 ? ', ' : ', eller ';
}
您在count()条件语句前面缺少一个echo,这实际上会使整个语句不管count()的结果是什么都不起作用。如果这是一个复制/粘贴错误,那么您可以提供更多的源代码吗?在foreach外部实例化一个名为$i的变量,将其设置为0,并为每个循环递增1,然后检查该变量 因为它是php,所以我不认为count返回dom对象的位置,它是在计算其他东西,可能是在$conditions中有多少个值
请将程序员的代码视为程序员,更容易阅读:
$i=0;
foreach($whome_回答[天气][预报条件]作为$condition){
$i++;
开关($condition['day\u of_week']['@attributes']['data'])){
案例“mån”:
$day='måndag';
打破
案例“tis”:
$day='tisdag';
打破
案例“ons”:
$day='onsdag';
打破
案例“tors”:
$day='torsdag';
打破
案例“fre”:
$day='fredag';
打破
案例“lör”:
$day='lördag';
打破
案例“sön”:
$day='söndag';
打破
}
回声';
如果($i==4)
回声',埃勒';
否则{
如果($i<4)
回声',';
}
}
问候
Tobias我正在查看代码…然后在您打印的示例中,我注意到…您在每个$condition之后打印“,”,eller”。这会使事情复杂化,因为您要在要检查的条件出现之前打印到屏幕上 逗号对于正确的可读语法是必不可少的,所以不管怎样都要保留它 另一方面,您可以在打印到屏幕之前检查“eller” 所以我对你的代码的解释更像这样
$counter = 1;
$amount = count($whome_answer[weather][forecast_conditions]);
foreach($whome_answer[weather][forecast_conditions] AS $condition) {
if ($counter == 4) echo 'eller ';
echo $condition['day'];
if ($counter != $amount) echo ', ';
$counter++;
}
我假设您可以根据已有的数据确定日期,并为每个$condition组成“day”键
另外,我注意到您的逻辑,
(count($condition)-1)不确定我是否理解这个问题。听起来好像对count的作用有误解。“如果计数(数据)低于或等于4”只是计数($data),请阅读整个问题。谢谢,但它只打印带有您的答案的onsdag、torsdag、fredag、lördag,
。请将您的代码片段正确张贴在此处。您有一个错误。你从一开始计数,然后一旦你进入循环就立即加一。当然,我的代码前面有echo
。这是必需的!请参阅我的编辑以获取完整的循环和指向我获取信息的网站的链接。@Erik-必须确保:]您是否尝试过将括号括在整个条件语句中?e、 g:echo((count($condition)-1)作为概念证明,他可以在循环的每次运行中尝试echo'ing out count($condition)。如果计数看起来错误,那么这可能是问题的根源。谢谢!我用您的解决方案得到了它,但我得到了一个逗号(,
)在字符串末尾。有关详细信息,请参阅我的编辑。我刚刚用代码末尾的最后一条if语句修复了该错误:)非常感谢!:你的答案是最终的解决方案,我将使用它。
$i = 0;
foreach($whome_answer[weather][forecast_conditions] AS $condition) {
$i++;
switch($condition['day_of_week']['@attributes']['data']) {
case 'mån':
$day = 'måndag';
break;
case 'tis':
$day = 'tisdag';
break;
case 'ons':
$day = 'onsdag';
break;
case 'tors':
$day = 'torsdag';
break;
case 'fre':
$day = 'fredag';
break;
case 'lör':
$day = 'lördag';
break;
case 'sön':
$day = 'söndag';
break;
}
echo '<a href="javascript:void(0)" class="forecast-link">';
echo $day;
echo '</a>';
if($i == 4)
echo ', eller';
else {
if($i < 4)
echo ',';
}
}
$counter = 1;
$amount = count($whome_answer[weather][forecast_conditions]);
foreach($whome_answer[weather][forecast_conditions] AS $condition) {
if ($counter == 4) echo 'eller ';
echo $condition['day'];
if ($counter != $amount) echo ', ';
$counter++;
}