如果是,检查数组中是否存在键,计算它并创建一个新的数组php

时间:2017-11-12 10:14:47

标签: php arrays multidimensional-array

从我的SQL查询中,我将获得以下数组作为结果。这是我可以从SQL获得的最后一个结果。由于某些约束,我无法更改任何SQL。 我需要检查是否存在相同的id,如果它确实需要对它们进行计数并删除具有相同id的重复数组之一。 样本数组是

$array = array(
          0 => array(
            'id' => '17',
            'status' => 1,


          ),
          1 => array(
            'id' => '18',
            'status' => 1,


          ),
          2 => array(
            'id' => '21',
            'status' => 1,


          ),
          3 => array(
            'id' => '5',
            'status' => 2,


          ),
          4 => array(
            'id' => '18',
            'status' => 1,


          ),
          5 => array(
            'id' => '22',
            'status' => 5,


          ),
          6 => array(
            'id' => '6',
            'status' => 1,


          ),
        );

我需要检查它们是否有重复的id,如果是,则需要计算它们并删除其中一个重复项。我们需要保留数组结构。

最终结果应为

array(
  0 => array(
    'id' => '17',
    'status' => 1,
'count'=1,

  ),
  1 => array(
    'id' => '18',
    'status' => 1,
'count'=2,



  ),
  2 => array(
    'id' => '21',
    'status' => 1,
'count'=1,


  ),
  3 => array(
    'id' => '5',
    'status' => 2,
'count'=1,


  ),
  4 => array(
    'id' => '22',
    'status' => 5,
'count'=1,


  ),

  5 => array(
    'id' => '6',
    'status' => 1,
'count'==>1,
  ),
)

2 个答案:

答案 0 :(得分:0)

您可以使用array_unique功能执行此操作。

像这样使用它:

$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a));

哪个输出:

Array ( [a] => red [b] => green )

答案 1 :(得分:0)

您可以通过这种方式进行检查,但仍会在数组中重复输入。

$ids = array();

foreach ($array as $key => $value) 
{
   $ids[] = $value['id'];
   $count = array_count_values($ids);
}

for($i = 0; $i < count($array);$i++)
{

  $array[$i]['count'] = $count[$array[$i]['id']];
}