我有一些代码可以将xml内容保存到变量中。其中一个变量可以是1-240之间的数字。根据范围(如1-30,30-60,60-90等),我想将一些文本保存到一个新变量。
我目前的代码存在问题(我对php很新,但赶快行动)。例如,我从xml文档($storm_wind
)中保存的变量是100
,根据我的代码,我应该将$category
变量保存为2
。但是,它将变量保存为5
(我假设这是因为我在代码中的最后一行是$category = '5';
。执行此代码的正确方法是什么?我应该使用{{1而不是语句?
以下是目前无效的代码片段:
elseif
答案 0 :(得分:2)
尽早删除正在终止if
结构的分号,例如:
if($storm_wind >=1 && $storm_wind <=38); {
$category = 'TD'; }
应该是:
if($storm_wind >=1 && $storm_wind <=38) {
$category = 'TD'; }
以及所有这些。
您的代码中发生的事情是if
构造可以采用以下形式:
if(expression) statement;
单个语句没有花括号 - 而且语句可以为空。所以
if(expression);
本身就是一个完整的,孤立的结构。你碰巧跟着每个用括号括起来的无关语句块。因此,您的每个if
结构都无效,并且$category
依次设置为每个值,最后保留为5。
答案 1 :(得分:1)
虽然保罗已经回答了这个问题,是的,您可以使用<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_margin="5dp"
card_view:cardElevation="2dp"
card_view:cardCornerRadius="4dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/info_image"
android:layout_alignParentTop="true"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:scaleType="centerCrop"/>
<TextView
android:layout_below="@id/info_image"
android:id="@+id/info_text"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
来减少执行的语句数量:
elseif
或者,你可以提取一个函数并提前返回:
if ($storm_wind >=1 && $storm_wind <=38) {
$category = 'TD';
} elseif ($storm_wind >=39 && $storm_wind <=73) {
$category = 'TS';
} elseif ($storm_wind >=74 && $storm_wind <=95) {
$category = 1;
} elseif ($storm_wind >=96 && $storm_wind <=110) {
$category = 2;
} elseif ($storm_wind >=111 && $storm_wind <=129) {
$category = 3;
} elseif ($storm_wind >=130 && $storm_wind <=156) {
$category = 4;
} elseif ($storm_wind >=157 && $storm_wind <=240) {
$category = 5;
}
或者:
function stormCategoryFrom($windSpeed)
{
if ($windSpeed >= 157) {
return 5;
}
if ($windSpeed >= 130) {
return 4;
}
if ($windSpeed >= 111) {
return 3;
}
if ($windSpeed >= 96) {
return 2;
}
if ($windSpeed >= 74) {
return 1;
}
if ($windSpeed >= 39) {
return 'TS';
}
return 'TD';
}
另外,看https://en.m.wikipedia.org/wiki/Tropical_cyclone_scales#Comparisons_across_basins看来你已经不在了。