如何输出数组的某些值


How to output certain values of an array

我正在尝试输出此数组的某些值。这是一个月/季节数组。要求用户输入一个季节,根据他们输入的季节,我希望它输出该季节的月份。

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

$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 个冬天。我认为它只是为每次迭代输出冬天。

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

提前谢谢。

在 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
)

你也可以使用不同的数组结构,就像

$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];