我正在尝试遍历自定义帖子类型并显示元键的所有元值。
我能够显示所有值,但是有一些重复。我想删除那些重复项。
我尝试过使用array_unique
没有运气。
我的代码:
<?php
query_posts(array(
'post_type' => 'lejlighed'
));
?>
<?php
while (have_posts()):
the_post();
$meta = get_post_meta($post->ID, 'antal_varelser');
foreach ($meta as $m) {
echo '<option value="1">' . $m . '</option>';
}
endwhile;
?>
结果:2 2 3 4 3 3 4
我的代码array_unique
:
<?php
$the_query = new WP_Query(array(
'post_type' => 'lejlighed',
));
?>
<?php
while ($the_query->have_posts()):
$the_query->the_post();
$meta = get_post_meta($post->ID, 'antal_varelser');
$result = array_unique($meta);
foreach($result as $r)
{
echo '<option value="1">' . $m . '</option>';
}
endwhile; ?>
什么都不输出。
print_r($meta)
返回:
Array ( [0] => 2 ) Array ( [0] => 12 ) Array ( [0] => 4 ) Array ( [0] => 2 ) Array ( [0] => 5 ) Array ( [0] => 2 ) Array ( [0] => 4 ) Array ( [0] => 4 ) Array ( [0] => 3 ) Array ( [0] => 3 )
有什么建议吗?
答案 0 :(得分:3)
array_unique
应该有用。
$result = array_unique($meta);
foreach ($result as $m) {
echo '<option value="1">' . $m[0] . '</option>';
}
如果没有,那么......
$temp = array();
foreach ($meta as $m) {
if (!in_array($m[0], $temp)) {
echo '<option value="1">' . $m[0] . '</option>';
$temp[] = $m[0];
}
}
答案 1 :(得分:0)
您可以尝试使用循环并首先填充另一个数组:
bool in_array ( $needle , array $haystack)
然后你应该在新数组中只有唯一的值,可以用于你的循环
修改强>
对我来说,有两种方法可以......
我们假设给出了这个数组:
$org = array('1', '2', '2', '3', '3', '4', '5', '6');
简单的array_unique:
// simple array unique call with sort by string
$new = array_unique($org, SORT_STRING);
// output the sorted array
var_dump($new);
使用in_array在循环中对数组进行排序:
// sort with in_array()
for ($i=0; $i < count($org); $i++) {
if (!in_array($org[$i], $new)) {
$new[] = $org[$i];
}
}
// output the sorted array
var_dump($new);
答案 2 :(得分:0)
array_unique似乎有效。
<?php
$a = array (
'1', '2', '2', '3', '4', '5', '4'
);
echo "<pre>initial array\n";
print_r($a);
echo "\n";
$result = array_unique($a);
echo "array_unique\n";
print_r($result);
echo "\n</pre>";
?>
产地:
initial array
Array
(
[0] => 1
[1] => 2
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 4
)
array_unique
Array
(
[0] => 1
[1] => 2
[3] => 3
[4] => 4
[5] => 5
)
您能提供更多细节吗?这可能有助于我们帮助你。
修改强>
看到print_r
的输出后,此解决方案应该适合您:
<?php
$multi_a = array (
array (
'1'
),
array (
'2'
),
array (
'3'
),
array (
'4'
),
array (
'4'
),
array (
'5'
),
array (
'2'
)
);
echo "<pre>initial multi-dimensional array\n";
print_r($multi_a);
echo "\n";
$result = array_map("unserialize", array_unique(array_map("serialize", $multi_a)));
echo "removed duplicates in multi-dimension array\n";
print_r($result);
echo "\n</pre>";
?>
输出:
initial multi-dimensional array
Array
(
[0] => Array
(
[0] => 1
)
[1] => Array
(
[0] => 2
)
[2] => Array
(
[0] => 3
)
[3] => Array
(
[0] => 4
)
[4] => Array
(
[0] => 4
)
[5] => Array
(
[0] => 5
)
[6] => Array
(
[0] => 2
)
)
removed duplicates in multi-dimension array
Array
(
[0] => Array
(
[0] => 1
)
[1] => Array
(
[0] => 2
)
[2] => Array
(
[0] => 3
)
[3] => Array
(
[0] => 4
)
[5] => Array
(
[0] => 5
)
)