仅显示Array中的唯一值

时间:2014-09-18 06:46:03

标签: php arrays

我在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']);

但这不起作用。

4 个答案:

答案 0 :(得分:1)

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

然后使用$unique

答案 1 :(得分:0)

这样的事情应该有效:

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

答案 2 :(得分:0)

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

$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];
}

答案 3 :(得分:0)

我想你想打印一次地址但多次打印...在这种情况下你可以做类似下面的事情

$printed_vals = array();

foreach ($array as $item) {
    $printed_vals[$item['adress']][] = $item['dob'];
}

foreach ($printed_vals as $address => $values) {
    echo $address . " => " . implode(",", $values);
}