我在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']);
但这不起作用。
答案 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);
}