因此,我使用以下函数从MD数组中获取唯一值:
function unique_multidim_array($array, $key) {
$temp_array = array();
$i = 0;
$key_array = array();
foreach( $array as $val ) {
if ( ! in_array( $val[$key], $key_array ) ) {
$key_array[$i] = $val[$key];
$temp_array[$i] = $val;
}
$i++;
}
return $temp_array;
}
我的数组类似于以下内容:
Array (
[0] =>
Array (
'name' => 'Nevada'
)
[1] =>
Array (
'name' => 'Colorado'
)
[2] =>
Array (
'name' => 'Nevada'
)
[3] =>
Array (
'name' => 'Colorado'
)
[4] =>
Array (
'name' => 'Oklahoma'
)
[5] =>
Array (
'name' => 'Nevada'
)
[6] =>
Array (
'name' => 'Nevada'
)
)
使用上面的函数(unique_multidim_array ( $term_arr, 'name' )
)我得到一个Nevada
和一个Colorado
但是,它没有返回Oklahoma
即使没有重复项,我该怎么做才能确保它会返回唯一值?
答案 0 :(得分:1)
PHP已经有一个从数组中删除重复项的功能
x = x[::-1]
应该做的伎俩
答案 1 :(得分:1)
您生成的数组会保留原始索引,并且,根据您对其进行迭代的方式,您可能会得到意外的结果。尝试重置索引:
function unique_multidim_array($array, $key) {
$temp_array = array();
$i = 0;
$key_array = array();
foreach( $array as $val ) {
if ( ! in_array( $val[$key], $key_array ) ) {
$key_array[$i] = $val[$key];
$temp_array[] = $val; // <--- remove the $i
}
$i++;
}
return $temp_array;
}
或者,正如您所说,array_values()
也会有所帮助:
$term_arr = array_values ( unique_multidim_array ( $term_arr, 'name' ) );