Php 如何输出数组的某些值

Php 如何输出数组的某些值,php,arrays,foreach,Php,Arrays,Foreach,我试图输出这个数组的某些值。这是一个月/季数组。用户被要求输入一个季节,根据他们输入的季节,我希望它输出该季节的月份 这是我到目前为止所拥有的- $user_input = $_POST ['user_input']; $month_season = array( 'January' => 'Winter', 'February' => 'Spring', 'March' => 'Spring', 'April' => 'Spring',

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

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

$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++;
    }
}
$user\u input=$\u POST['user\u input'];
$month\u seasure=数组(
“一月”=>“冬天”,
“二月”=>“春天”,
“三月”=>“春天”,
“四月”=>“春天”,
“五月”=>“夏天”,
“六月”=>“夏天”,
“七月”=>“夏天”,
“八月”=>“秋天”,
“九月”=>“秋天”,
“十月”=>“秋天”,
“十一月”=>“冬天”,
“十二月”=>“冬天”
);
$j=0;
foreach($月\季作为$值){
如果($month\u seasure[$j]='Winter')
{
echo$month_季节[$j];
回声“
”; $j++; } }
例如,我只使用winter,直到它工作为止,然后我将扩展所有季节的代码。然而,当我在上一页输入winter时,输出是12个winters。我假设它只是为每个迭代输出winter

为什么会这样?我该怎么做才能得到我想要的


提前感谢。

在PHP中比较值时,必须使用
=
=
运算符。在
if
语句中使用
=
时,您会给
$month\u seasure[$j]
冬季的值

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

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

1) 如果使用foreach,则不需要计数器变量foreach($month\u seasure as$value)2)
=
赋值
=
比较(这里还需要注意:不能将关联键用作数字键)
if($month\u-seasure[$j]='Winter')
应该类似于
if($value==$user\u-input)
。如果这样做:
print\r($month\u-seasure)在您的代码之后,您将看到您创建的内容。因此它应该更像这样-foreach($month\u season as$value){if($month\u season[?]==$user\u input){echo$month\u season[?];echo“
”;}我在数组索引中添加了问号,因为我仍然不知道如何检查数组值是否为“冬季”,如果是,如何仅输出该值?谢谢@D_is for Paul你想用foreach:这似乎是一个很好的方法来做我正在尝试的事情。我之前也在尝试多维数组。尽管如此,尝试这样做我还是会出错——即使我在echo$seasons['Winter'中输入了;我仍然得到错误。错误是-注意:数组到字符串的转换