我不确定如何将此代码与一些if / else语句组合在一起。
我检查一个字段是否为空 - 在这种情况下,我还检查该值是否与某个文本匹配。
此过程再重复两次,另外两个字段。
最后一件事是添加一个新字段 if ,其中if条件中没有匹配项。 我需要以某种方式重写它,我没有弄明白。我以为我可以将变量设置为" true"如果有匹配。但我猜我打破了一些范围规则。所以我的" $ alreadyexists"变量是完全错误的。
我该怎么做呢?
$textcontent = "Unique text in a unique field";
$subfieldvalue1 = get_post_meta($page_id,$subfield1 );
$subfieldvalue2 = get_post_meta($page_id,$subfield2 );
$subfieldvalue8 = get_post_meta($page_id,$subfield8 );
$alreadyexists = false;
if(!empty($subfieldvalue1)){
if($subfieldvalue1[0] === $textcontent){
$alreadyexists = true;
}
}
if(!empty($subfieldvalue2)){
if($subfieldvalue2[0] === $textcontent){
$alreadyexists = true;
}
}
if(!empty($subfieldvalue8)){
if($subfieldvalue8[0] === $textcontent){
$alreadyexists = true;
}
}
if($alreadyexists = false){
//add new field with text content!
}
答案 0 :(得分:1)
如果get_post_meta
在非空时返回一个至少有一个索引的数组,那么您的代码应该可以正常工作。仅供参考,您命名为$alreadyexists
的变量称为标志变量。您可以使用if else
来优化代码(因此当一个条件求值为true
时解析器将停止)并且您可以通过在if
语句中使用{链接嵌套条件来增强可读性{1}}运算符。但是,虽然我们正在努力,但你最好还是编写一个适用于任意数量字段的函数(见下文)。
请注意,在您当前的代码中,如果所有值都存在,&&
甚至会为false,只有当其中一个与$alreadyexists
完全匹配时才会为真。
$textcontent
答案 1 :(得分:0)
我会创建一个单独的方法,接收“$ subfieldX”和$ page_id的列表作为输入。所以伪代码是:
boolean checkingMethod(list_of_entries, $page_id){
for(all entries in list_of_entries) {
$subfieldvalue = get_post_meta($page_id,$entry );
if(!empty($subfieldvalue)){
if($subfieldvalue[0] === $textcontent){
return true;
}
}
}
}
一旦你发现一个是真的,你知道没有什么可做的。我们的想法是为N个条目提供一段代码。