创建基于元素的总元素值,在数组php中具有相同的值

时间:2016-05-17 14:39:18

标签: php

我在php上有这样的数组:

Array
(
[0] => Array
    (
        [CONSIGNEE] => PT. XX
        [CONTAINER] => DFSU1587848

    )

[1] => Array
    (
        [CONSIGNEE] => PT. YYY
        [CONTAINER] => TEMU2365554
    )

[2] => Array
    (
        [CONSIGNEE] => PT. ZZZ
        [CONTAINER] => CBHU5788073

    )

[3] => Array
    (
        [CONSIGNEE] => PT. HHH
        [CONTAINER] => CBHU5788073
    )

[4] => Array
    (
        [CONSIGNEE] => PT. OOO
        [CONTAINER] => CBHU3884376
    )
)

请参阅元素CONTAINER。

我怎么知道那些阵列上只有4个项目容器,即

DFSU1587848, TEMU2365554, CBHU5788073, CBHU3884376.

如果php有这样的内置函数吗?

4 个答案:

答案 0 :(得分:2)

$containers = array_unique(array_column($data, 'CONTAINER'));
$count = count($containers);
  1. array_column获取二维数组中的列。
  2. array_unique从数组中删除重复项。
  3. count计算数组中的所有元素。

答案 1 :(得分:0)

有点不清楚你在问什么 - 根据我的理解,你希望在这个数组中创建一个包含CONTAINER值的数组。

您可以通过循环遍历数组并将这些值添加到新数组来完成此操作,如下所示:

//Set up new array
$containers = [];

//Loop through existing array
foreach($array as $a){

    //See if this array has a "container" key
    if($a["CONTAINER"]){

        //Push the new Container value to the $containers array
        $containers[] = $a["CONTAINER"];

    }

}

//Output the finished product
print_r($containers);

完成此操作后,使用CONTAINER键计算元素数量:

$num = count($containers);

仅适用于CONTAINER键的计数:

$n = 0;
foreach($array as $a){
    if($a["container"]) $n++;
}

echo $n;

答案 2 :(得分:0)

您可以使用array_map

$yourArray = [
    ['x' => 'a', 'CONTAINER' => 'aa'],
    ['x' => 'a', 'CONTAINER' => 'bb'],
    ['x' => 'a', 'CONTAINER' => 'cc'],
    ['x' => 'a', 'CONTAINER' => 'aa'],
    ['x' => 'a', 'CONTAINER' => 'aa'],
    ['x' => 'a', 'CONTAINER' => 'bb'],
];


$arr = array_unique(array_map(function($x){ return $x['CONTAINER']; }, $yourArray));
echo (count($arr));

它会回声3。

答案 3 :(得分:0)

要获取所有CONTAINER值,请执行以下操作:

$key = 'CONTAINER';
$containers = array_map(function($item) use ($key) {
    return $item[$key];
}, $array);

print_r($containers);

如果您只是想知道有多少CONTAINER个值,请在上述代码后执行count()

echo count($containers);