如何输出数组的某些值

时间:2016-02-27 13:56:55

标签: php arrays foreach

我试图输出此数组的某些值。这是一个月/季阵。用户被要求输入一个季节,根据他们输入的季节,我希望它在那个季节输出几个月。

这是我到目前为止所拥有的 -

$user_input = $_POST ['user_input'];

$month_season = array(
    'January' => 'Winter',
    'February' => 'Spring',
    'March' => 'Spring',
    'April' => 'Spring',
    'May' => 'Summer',
    'June' => 'Summer',
    'July' => 'Summer',
    'August' => 'Autumn',
    'September' => 'Autumn',
    'October' => 'Autumn',
    'November' => 'Winter',
    'December' => 'Winter'
);

$j = 0;
foreach ($month_season as $value) {
    if ($month_season[$j] = 'Winter')
    {
        echo $month_season[$j];
        echo "<br>";
        $j++;
    }
}

例如,我只是使用冬天直到我开始工作,然后我会扩展所有季节的代码。但是,当我在上一页输入冬天时,输出是12个冬天。我认为它只是为每次迭代输出冬天。

这是为什么?我应该在这做什么才能得到我想要的东西?

提前致谢。

2 个答案:

答案 0 :(得分:1)

在比较PHP中的值时,必须使用=====运算符。在=语句中使用if时,您将$month_season[$j]的值设为Winter

我认为这是一个更优雅的解决方案:

$seasonArray = array(
            'January' => 'Winter',
            'February' => 'Spring',
            'March' => 'Spring',
            'April' => 'Spring',
            'May' => 'Summer',
            'June' => 'Summer',
            'July' => 'Summer',
            'August' => 'Autumn',
            'September' => 'Autumn',
            'October' => 'Autumn',
            'November' => 'Winter',
            'December' => 'Winter'
            );

$monthArray = array();

while(array_search('Winter', $seasonArray) !== FALSE) {
    $key = array_search('Winter', $seasonArray);
    $monthArray[] = $key;
    unset($seasonArray[$key]);
}

print_r($monthArray);

最后$monthArray包含所需的值:

Array
(
    [0] => January
    [1] => November
    [2] => December
)

答案 1 :(得分:1)

你也可以像

一样使用不同的数组结构
$seasons = array (
    'Spring' => array('February', 'March', 'April' ),
    'Summer' => array('May', 'June', 'July' ),
    'Autumn' => array('August', 'September', 'October' ),
    'Winter' => array('January', 'November', 'December' ),
)

echo $seasons[$user_input];