我想为每个键存储多个值,有点像多维数组。我编写了一个函数,首先检查键是否已经存在,如果存在,它将简单地将值插入到特定数组的末尾。下面是我的代码:
$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参数调用它两次,键似乎也不存在。
这就是你想要做的吗?
$arr = array('fruit' => array());
$arr['fruit'][] = 'banana';
$arr['fruit'][] = 'apple';
print_r($arr);
…因为在这种情况下,你的复杂函数有点过于复杂了;)
或者我可能会误解(老实说,我并没有真正得到你的函数),但你的问题可能像这样简单:你想传递第一个参数作为引用(所以你对它所做的任何更改将持续存在)-只需在变量名前面放一个&
:
function add_to_array(&$array, $key, $value) {
// [...]
}