Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php关联数组数组-添加键/值、检查键是否存在、向值数组添加值_Php_Arrays - Fatal编程技术网

php关联数组数组-添加键/值、检查键是否存在、向值数组添加值

php关联数组数组-添加键/值、检查键是否存在、向值数组添加值,php,arrays,Php,Arrays,我不熟悉PHP关联数组,所以我希望有人能对这个主题有所了解,并建议如何解决我的特定问题 我有一个数据数组,其中每个元素都是由“Month,Year”组成的字符串。 我想解析这些数据并创建一个关联数组,其中键是年份,值是该年月份的数组 例如,我有数组(“2011年11月”、“2011年5月”、“2010年7月”) 使用foreach循环,我希望解析此数据并创建数组: array( "2011" => array("Novemeber", "May"), "2010" => array(

我不熟悉PHP关联数组,所以我希望有人能对这个主题有所了解,并建议如何解决我的特定问题

我有一个数据数组,其中每个元素都是由“
Month,Year
”组成的字符串。 我想解析这些数据并创建一个关联数组,其中键是年份,值是该年月份的数组

例如,我有
数组(“2011年11月”、“2011年5月”、“2010年7月”)
使用foreach循环,我希望解析此数据并创建数组:

array( "2011" => array("Novemeber", "May"), "2010" => array("July"))
从我所看到的,我需要知道如何检查一个键是否存在,如果它没有创建它,并创建一个新数组作为它的值,如果是,将月份附加到已经存在的值数组中

如果这是有意义的,任何帮助将不胜感激!谢谢

试试这个(编辑第二遍,忘记关键字
数组
,添加修剪):

<?php

$initialArray = array("November, 2011", "May, 2011", "July, 2010");

$finalArray = array();

foreach($initialArray as $value)
{
  // Note: I suppose here that each initialArray element is "<Month>, <Year>",
  // otherwise the following line may trigger errors.
  list($month, $year) = array_map('trim', explode(",", $value));

  if (!isset($finalArray[$year]))
    $finalArray[$year] = array();

  $finalArray[$year][] = $month;
}

// orders years, however months arrays below years won't be ordered.
ksort($finalArray); 
输出:

print_r($outarr);
Array
(
    [ 2011] => Array
        (
            [0] => November
            [1] => May
        )

    [ 2010] => Array
        (
            [0] => July
        )  
)

好的,让我们试试这个:

<?php

$my_array = array('November, 2011', 'May, 2011', 'July, 2010');
$final = array();

foreach($my_array as $item) {

    // Let's split the Month and Year
    $item = explode(', ', $item);
    $final[$item[1]][] = $item[0];
}

print_r($final);

?>

“关联”数组,只是为了吹毛求疵。我认为空格应该至少在一年左右(而不是一个月)进行修剪。第一行的语法错误+a
trim()
应该应用于一年keys@FrostyZ:哈哈,谢谢。忘记关键字
array
,这是我不用测试就能得到的。
print_r($outarr);
Array
(
    [ 2011] => Array
        (
            [0] => November
            [1] => May
        )

    [ 2010] => Array
        (
            [0] => July
        )  
)
<?php

$my_array = array('November, 2011', 'May, 2011', 'July, 2010');
$final = array();

foreach($my_array as $item) {

    // Let's split the Month and Year
    $item = explode(', ', $item);
    $final[$item[1]][] = $item[0];
}

print_r($final);

?>
Array
(
    [2011] => Array
        (
            [0] => November
            [1] => May
        )

    [2010] => Array
        (
            [0] => July
        )

)