- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
WP 输出一个数组:
$therapie = get_post_meta($post->ID, 'Therapieen', false);
print_r($therapie);
//the output of print_r
Array ( [0] => Massagetherapie )
Array ( [0] => Hot stone )
Array ( [0] => Massagetherapie )
我如何将这些数组合并为一个并删除所有确切的双名?
结果是这样的:
theArray
(
[0] => Massagetherapie
[1] => Hot stone
)
[已解决] 问题是,如果你在 while 循环中执行此操作,它不会在这里工作
<?php query_posts('post_type=therapeut');
$therapeAr = array(); ?>
<?php while (have_posts()) : the_post(); ?>
<?php $therapie = get_post_meta($post->ID, 'Therapieen', true);
if (strpos($therapie,',') !== false) { //check for , if so make array
$arr = explode(',', $therapie);
array_push($therapeAr, $arr);
} else {
array_push($therapeAr, $therapie);
} ?>
<?php endwhile; ?>
<?php
function array_values_recursive($ary) { //2 to 1 dim array
$lst = array();
foreach( array_keys($ary) as $k ) {
$v = $ary[$k];
if (is_scalar($v)) {
$lst[] = $v;
} elseif (is_array($v)) {
$lst = array_merge($lst,array_values_recursive($v));
}}
return $lst;
}
function trim_value(&$value) //trims whitespace begin&end array
{
$value = trim($value);
}
$therapeAr = array_values_recursive($therapeAr);
array_walk($therapeAr, 'trim_value');
$therapeAr = array_unique($therapeAr);
foreach($therapeAr as $thera) {
echo '<li><input type="checkbox" value="'.$thera.'">'.$thera.'</input></li>';
} ?>
最佳答案
下面应该可以解决问题。
$flattened = array_unique(call_user_func_array('array_merge', $therapie));
或更有效的替代方案(感谢 erisco 的评论):
$flattened = array_keys(array_flip(
call_user_func_array('array_merge', $therapie)
));
如果 $therapie
的键是字符串,您可以删除 array_unique
。
或者,如果您想避免call_user_func_array
,您可以研究展平多维数组的各种不同方法。这里有一些(one,two)关于 SO 的好问题,详细说明了这样做的几种不同方法。
我还应该注意,这只有在 $therapie
只是一个二维数组时才有效,除非您不想将其完全展平。如果 $therapie
超过 2 个维度并且您想将其展平为 1 个维度,请查看我上面链接的问题。
相关文档条目:
array_flip
array_keys
array_merge
array_unique
call_user_func_array
关于PHP 合并数组并删除双值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6180090/
Java api 有一个关于如何生成 0(含)和 n(不包括)之间整数的方法,但没有生成给定范围(例如 2.0 到 3.0)的 double 值随机数的方法。如何做到这一点? double x =
在 ASP.NET C# 中,我发布了一个值,在回发中我需要将它解析为一个长值。看起来不错,带 float 的值被视为非数字(或至少是非长值)如果发布的值为 50.1 long x=0; long.T
我想要一个包含以下条目的组合框: {"0,5", "1", "1,5", "2", "2,5"} 我使用数据验证: DataValidation dataValidation = null;
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: std::to_string - more than instance of overloaded func
我正在尝试从 Excel 获取 double 值到我的 C# 项目。但是,当我尝试这样做时,Visual Studio 会自动删除逗号/句点,并显示没有它们的数字。 例如: Excel:192,168
这似乎是一个有点模糊的问题 - 但是在我的 UI 中点击我得到一个“无法识别的选择器发送到实例”。堆栈跟踪真的不是很有帮助。一般来说 - 在 Monodevelop 中调试它的最佳方法是什么?任何建议
我是一名优秀的程序员,十分优秀!