我想在in_array语句中创建一个条件。基本上,我想为Wordpress输出的数组中的每个键返回一个值(在div标签内)。实质上,Wordpress基于管理员后端中的复选框对话框从此阵列输出键。因此,如果找不到数组中的某个键(因为管理员没有在后端的复选框中单击它),那么它根本就不会显示它。
这是我能确定的最接近的代码。我决定,出于测试目的,如果阵列中的某个键不存在,我会暂时返回“Nope”字样(而不是如上段所述“根本不显示它”)。
$my_arr = get_custom_field('product_options');
$opts = array(
'Option 1' => '<div>Option 1 description</div>',
'Option 2' => '<div>Option 2 description</div>',
'Option 3' => '<div>Option 3 description</div>',
);
foreach($opts as $k=>$v) {
if (in_array($my_arr[$k],$opts)!==TRUE) echo $v; else echo 'nope';
}
?>
上面的代码已经过测试,它显示了所有内容的“选项__描述”。当选项实际上没有在阵列中输出时,它甚至会显示“选项2描述”(基于管理员不在后端内点击选项2)。这是不正确的,我希望在上述声明的“else”部分内得到(在这种情况下为了便于测试)回声。
更新2:当前代码在此处:http://codepad.org/nxzFUMMn
更新:当前代码位于:http://codepad.org/iXVbmLGL
答案 0 :(得分:1)
这里的技巧是切换阵列,例如
<?php
$my_arr = get_custom_field('othermulti');
$opts = array(
'Man' => '<div>Man description</div>',
'Bear' => '<div>Bear description</div>',
'Pig' => '<div>Pig description</div>',
);
$opts_arr = array_keys($opts);
if ( is_array($my_arr) ) {
foreach($opts_arr as $opt) {
if ( in_array($opt, $my_arr) ) {
print $opts[$opt]; // will print the description for checked items.
}
else {
print $opt . ' was not checked.';
}
}
}
else {
print 'No options checked.';
}
?>
get_custom_field()是使用此插件的插件的自定义模板函数。有关详细信息,请参阅以下链接: http://wordpress.org/support/topic/ifelse-statement-for-custom-checkbox?replies=16
答案 1 :(得分:0)
正在发生的事情表明实际上$my_arr
的所有值都不匹配$opts
的值。我想你想用
if (in_array($my_arr[$k], array_keys($opts)) !== TRUE) {
另请注意$my_arr[$k]
=== $v
和in_array($x, $y) !== TRUE
=== !in_array($x, $y)