为每个唯一键存储多个值

时间:2015-07-15 17:37:29

标签: php arrays multidimensional-array

我想为每个键存储多个值,有点像多维数组。我写了一个函数,第一次检查密钥是否已经存在,如果确实存在,它只会将值插入到特定数组的末尾。这是我的代码:

$arr = array();
add_to_array($arr,"fruit","apple");
add_to_array($arr,"fruit","banana");
function add_to_array($array, $key, $value) {
  if(array_key_exists($key, $array)) {
      echo $key;
      if(is_array($array[$key])) {
          $array[$key][] = $value;
      }
      else {
          $array[$key] = array($array[$key], $value);           
      }
  echo $key;
  }
  else {
      $array[$key] = array($value);
      echo $key; // I am calling this function with the same key however, this statement gets printed out twice
      echo "\n";
  }

}

然而,当我运行这个程序时,即使我用相同的$ key参数调用它两次,它似乎永远不会存在。

1 个答案:

答案 0 :(得分:1)

这是你想要做的吗?

$arr = array('fruit' => array());
$arr['fruit'][] = 'banana';
$arr['fruit'][] = 'apple';
print_r($arr);

...因为在这种情况下,你会因为精心设计的功能而过度复杂化;)

或者我可能会误解(我实际上并非 > > >)但是你的问题可能就像这样简单:你想要传递第一个参数{{ 3}}(所以你对它做出的任何改变都会持续存在) - 只需在变量名前放一个&

function add_to_array(&$array, $key, $value) {
    // [...]
}