Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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_Multidimensional Array - Fatal编程技术网

在php中增加多维数组中的值

在php中增加多维数组中的值,php,multidimensional-array,Php,Multidimensional Array,我无法正确理解PHP中的多维数组。我有一个CSV文件,有两列,如下所示: 我试图创建一个数组数组,其中每个键都是一个目录。但是,每个键的值都是一个数组。在这个数组中,每个键都是company,value是产品的计数。请参见下面的代码: <?php //array contains value function contains_value($my_array, $value_search){ foreach ($my_array as $key => $value) {

我无法正确理解PHP中的多维数组。我有一个CSV文件,有两列,如下所示:

我试图创建一个数组数组,其中每个键都是一个目录。但是,每个键的值都是一个数组。在这个数组中,每个键都是company,value是产品的计数。请参见下面的代码:

<?php
//array contains value
function contains_value($my_array, $value_search){
    foreach ($my_array as $key => $value) {
        if ($value === $value_search)
            return true;
    }
    return false;
}
//array contains key
function contains_key($my_array, $key_search){
    foreach ($my_array as $key => $value) {
        if ($key === $key_search)
            return true;
    }
    return false;
}

$handle   = fopen("product_list.csv", "r");
$products = array();
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        $product  = explode(",", $line);
        $category = $product[0];
        $company  = $product[1];

        if (contains_key($products, $category)) {
            if (contains_value($products, $company)) {
                //increase the count of category by 1
                $products[$category][$company] = $products[$category][$company] + 1;
            } else {
                //append new company with count 1
                array_push($products[$category], array(
                    $company,
                    1
                ));
            }
        } else {
            //initialize new company with count 1
            $products[$category] = array(
                $company,
                1
            );
        }
    }
    fclose($handle);
}

var_dump($products);
?>

我注意到
var\u dump($products)
没有显示更正信息。我期待着以下结果:
我没有足够的声誉来回答,但我认为他需要考虑

要完成“活到死”的答案,更像这样:

if (!array_key_exists($category, $products)) {
    products[$category] = [];
}

if (!array_key_exists($company, $products[$category])) {
    products[$category][$company] = 0;
}

++$results[$cataegory][$company];
但是更干净;)

编辑:

如果我记得清楚的话,他的第一个想法是:

$products[$category][] = $company;

代码较短。也许你可以把这两个想法结合起来。

我没有足够的声誉来回答,但我认为他需要考虑

要完成“活到死”的答案,更像这样:

if (!array_key_exists($category, $products)) {
    products[$category] = [];
}

if (!array_key_exists($company, $products[$category])) {
    products[$category][$company] = 0;
}

++$results[$cataegory][$company];
但是更干净;)

编辑:

如果我记得清楚的话,他的第一个想法是:

$products[$category][] = $company;

代码较短。也许你可以把这两种想法结合起来。

一个“数组数组”或多维数组没有键;您一定在考虑关联数组。你能告诉我们最终输出的结构吗?告诉我们结果应该是什么样子。请看一下更新后的问题。我刚刚添加了示例输出。非常感谢。数组的数组或多维数组没有键;您一定在考虑关联数组。你能告诉我们最终输出的结构吗?告诉我们结果应该是什么样子。请看一下更新后的问题。我刚刚添加了示例输出。非常感谢。我看不到
活到死
给出的答案。你能把那部分也贴出来吗?非常感谢。事实上,它比我的方法短得多,也容易得多。再次感谢。无法看到
活到死的答案。你能把那部分也贴出来吗?非常感谢。事实上,它比我的方法短得多,也容易得多。再次感谢。