使用array_push将键/值元素添加到数组

时间:2015-06-09 15:26:47

标签: php arrays

我正在遍历数组,在找到重复的键时,我试图将其添加为键/值的另一个元素。

数据看起来像这样

[139432,97]
[139432,11400]
[139440,97]
[139440,7898]

正如您所看到的,第一个元素是键,并且该键上的任何匹配都应该是键/值,因此结果如下:

139432 => '97', '11400'
139440 => '97', '7898'

所以我使用以下内容来创建一个新数组,或者将新值推送到现有数组:

if(isset($output[$key])) {
    array_push($output[$key], array( 'volume' => $temp[1] ));         
}       
else { 
    $output[$key] = array( 'score' => $temp[1]);         
}

所以我得到的是这样的:

 array (size=31)
  139432 => 
    array (size=2)
      'score' => int 97
      0 => 
        array (size=1)
          'volume' => int 11400
  139440 => 
    array (size=2)
      'score' => int 97
      0 => 
        array (size=1)
          'volume' => int 7898

我不想要'音量'部分是另一个数组,我只想要的是:

array (size=31)
  139432 => 
    array (size=2)
      'score' => int 97          
      'volume' => int 11400
  139440 => 
    array (size=2)
      'score' => int 97
      'volume' => int 7898

我如何使用创建,添加数组不正确?

2 个答案:

答案 0 :(得分:1)

你可以像这样将它们放入数组中。我认为它会产生你想要的输出。

    if(array_key_exists($key, $output)) {
        $output[$key]['volume']=$temp[1];
        //array_push($output[$key], array( 'volume' => $temp[1] ));         
    }       
    else {
        $output[$key]['score']=$temp[1];
        //$output[$key] = array( 'score' => $temp[1]);         
    }

答案 1 :(得分:1)

您不需要array_push。这应该有效:

if(isset($output[$key])) {
    if(isset($output[$key]['score'])) {
        $output[$key]['volume'] = $temp[1];         
    }       
    else { 
        $output[$key] = array( 'score' => $temp[1]);         
    }
}