Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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中的哈希表将一个键映射到一个值。该值可以是一个数组,但您必须自己构建该数组。您可以考虑创建一个类来为您这样做。 您可以创建包装函数: function add_to_array($array, $key, $value) { if(array_key_exists($key, $array)) {

我曾经尝试用同一个键添加两个值,但没有成功。它超越了旧值。难道不能用同一个键添加多个值吗?当按键检索时,我会得到一个链表,我可以迭代它来获取所有不同的值吗?

除非您实际存储了一个数组作为值。PHP中的哈希表将一个键映射到一个值。该值可以是一个数组,但您必须自己构建该数组。您可以考虑创建一个类来为您这样做。

您可以创建包装函数:

function add_to_array($array, $key, $value) {
    if(array_key_exists($key, $array)) {
        if(is_array($array[$key])) {
            $array[$key][] = $value;
        }
        else {
            $array[$key] = array($array[$key], $value);           
        }
    }
    else {
        $array[$key] = array($value);
    }
}
所以你只需要创建一个二维数组。您可以通过正常的数组访问来检索“链表”(另一个数组)
$array[$key]


这种方法是否方便取决于你

最简单的选项:无论您在哪里使用
$array[$key]=…
都将其替换为
$array[$key][]=…

,这样它就可以工作了,因为它应该是这样的;)正如下面的cdhowie所说,您可以创建(或可能找到)一个具有您描述的功能的类。您的问题标题和问题内容非常不同。。。