数组一次不显示相同的名称

时间:2020-05-12 12:29:34

标签: php arrays foreach

我下面有一个foreach循环。我不想在这个周期中列出相同的人,我该怎么做? 我按如下方式使用array_unique,但由于数组不同,如何与他人同步?

json

{
  "1": {
    "id": "25",
    "name": "Berk"
  },
  "2": {
    "id": "23",
    "name": "Ali"
  }
}


{
  "1": {
    "id": "25",
    "name": "Berk"
  },
  "2": {
    "id": "23",
    "name": "Berk"
  }
}

{
  "1": {
    "id": "25",
    "name": "Berk"
  },
}
$json_cikti = json_decode($json->siparis_json, true);

 $arr = array();
 foreach ($json_cikti as $items) {
     $arr[] = $items['name'];
 }
 $unique_data = array_unique($arr);
 print_r($unique_data);

结果;

Array ( [0] => Berk [1] => Ali) 
Array ( [0] => Berk ) 
Array ( [0] => Berk )

我想要这样的结果;

Array ( [0] => Berk [1] => Ali )

1 个答案:

答案 0 :(得分:0)

假设您的输入数组为$json_cikti,如上所示,您应该能够做到这一点:

<?php

$json_cikti = [
    [
      "1" => [
        "id" => "25",
        "name" => "Berk"
      ],
      "2" => [
        "id" => "23",
        "name" => "Ali"
      ]
    ],
    [
      "1" => [
        "id" => "25",
        "name" => "Berk"
      ],
      "2" => [
        "id" => "23",
        "name" => "Berk"
      ]
    ],
    [
      "1" => [
        "id" => "25",
        "name" => "Berk"
      ],
    ],
];

$names = array_map(
    function ($items) {
        return array_map(
            function ($item) {
                return $item['name'];
            },
            $items
        );
    },
    $json_cikti
);

$names_flat = array_merge(...$names);

$names_unique = array_unique($names_flat);

var_dump($names_unique);