我下面有一个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 )
答案 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);