我试图输出此数组的某些值。这是一个月/季阵。用户被要求输入一个季节,根据他们输入的季节,我希望它在那个季节输出几个月。
这是我到目前为止所拥有的 -
$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个冬天。我认为它只是为每次迭代输出冬天。
这是为什么?我应该在这做什么才能得到我想要的东西?
提前致谢。
答案 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];