根据第一个变量的输出将输出保存到新变量

时间:2017-07-15 01:38:49

标签: php

我有一些代码可以将xml内容保存到变量中。其中一个变量可以是1-240之间的数字。根据范围(如1-30,30-60,60-90等),我想将一些文本保存到一个新变量。

我目前的代码存在问题(我对php很新,但赶快行动)。例如,我从xml文档($storm_wind)中保存的变量是100,根据我的代码,我应该将$category变量保存为2。但是,它将变量保存为5(我假设这是因为我在代码中的最后一行是$category = '5';。执行此代码的正确方法是什么?我应该使用{{1而不是语句?

以下是目前无效的代码片段:

elseif

2 个答案:

答案 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看来你已经不在了。