仅显示数组中的唯一值


Show only unique values from Array

我在php中有以下数组:

array(12) {
  [0]=>
  array(2) {
    ["adress"]=>
    string(17) "Kungsvägen 118 A "
    ["dob"]=>
    string(10) "1969-06-17"
  }
  [1]=>
  array(2) {
    ["adress"]=>
    string(14) "Skolgatan 1 B "
    ["dob"]=>
    string(10) "1969-06-17"
  }
  [2]=>
  array(2) {
    ["adress"]=>
    string(14) "Skolgatan 1 B "
    ["dob"]=>
    string(10) "1980-05-22"
  }
  [3]=>
  array(2) {
    ["adress"]=>
    string(12) "Myntvägen 8 "
    ["dob"]=>
    string(10) "1980-05-22"
  }
  [4]=>
  array(2) {
    ["adress"]=>
    string(14) "Skolgatan 1 B "
    ["dob"]=>
    string(10) "1993-05-09"
  }
  [5]=>
  array(2) {
    ["adress"]=>
    string(14) "Skolgatan 1 B "
    ["dob"]=>
    string(10) "1989-06-28"
  }
  [6]=>
  array(2) {
    ["adress"]=>
    string(14) "Skolgatan 1 B "
    ["dob"]=>
    string(10) "1991-03-17"
  }
  [7]=>
  array(2) {
    ["adress"]=>
    string(14) "Skolgatan 1 B "
    ["dob"]=>
    string(10) "1989-10-30"
  }
  [8]=>
  array(2) {
    ["adress"]=>
    string(23) "Gasslanda VÄSTERGÅRD 2 "
    ["dob"]=>
    string(10) "1980-10-30"
  }
  [9]=>
  array(2) {
    ["adress"]=>
    string(14) "Skolgatan 1 B "
    ["dob"]=>
    string(10) "1980-10-30"
  }
  [10]=>
  array(2) {
    ["adress"]=>
    string(14) "Skolgatan 1 B "
    ["dob"]=>
    string(10) "1990-05-01"
  }
  [11]=>
  array(2) {
    ["adress"]=>
    string(11) "Ågatan 6 A "
    ["dob"]=>
    string(10) "1990-05-01"
  }
}

当我做foreach时,我想打印出这个数组中唯一的地址值。正如您所看到的,Skolgatan 1 B在数组中出现了好几次,所以我想在循环中只打印一次。我该怎么做?我试过

array_unique([$newArray['adress']);

但这并不奏效。

$unique = array();
foreach($array as $item)
    $unique[$item['adress']] = $item;

然后使用$unique

这样的东西应该可以工作:

$printed_vals = array();
foreach ($array as $item) {
    if (!in_array($item['adress'], $printed_vals)) {
        print_r($item);
        $printed_vals[] = $item['adress'];
    }
}

这就是我解决这个问题的方法。希望能有所帮助。

$non_duplicates = array();
$i=0;
foreach( $addresses AS $address ){
    if( !in_array( $address['adress'], $non_duplicates ) ){
        // Use one of the below array_push statements
        array_push( $non_duplicates, $i ); // if you want to get the array key position
        array_push( $non_duplicates, $address['adress'] ); // if you only want a new array of unique addresses
    }
    $i++;
}

如果您选择只将关键仓位返回$non_duplicates,那么您可以通过以下方式从您的阵列中检索您的唯一仓位:

foreach( $non_duplicates AS $key ){
    echo $addresses[$key];
}

我想你想打印一次地址,但要多次打印。。在这种情况下,你可以做一些类似于的事情

$printed_vals = array();
foreach ($array as $item) {
    $printed_vals[$item['adress']][] = $item['dob'];
}
foreach ($printed_vals as $address => $values) {
    echo $address . " => " . implode(",", $values);
}