我有下面的代码。
$coauthors = get_post_meta( $post_id, "coAuthors" );
print_r($coauthors);
print_r的结果是
Array ( [0] => 78 ) Array ( [0] => 78 )
现在我的用户ID是78所以它应该使用以下代码返回true,但它不是。
$key = array_search( 78, $coauthors );
if($key) {
return true;
}else{
echo "no";
}
为什么我总是不知道我哪里出错了最好的方法呢???
由于
add_action('is_true','isdAuthorTrue');
function isdAuthorTrue( $post_id ) {
$current_user = wp_get_current_user();
if ( !($current_user instanceof WP_User) )
return;
$current_user = wp_get_current_user();
$coauthors = get_post_meta( $post_id, "coAuthors" );
$key = array_search( $current_user->ID, $coauthors );
$key = 0;
if($key !== false) {
return true;
} else {
return false;
}
}
然后我试图在循环中运行它。
if(do_action( 'is_true', $post->ID )){
echo "yes";
}else{
echo "no";
}
帮助???
答案 0 :(得分:6)
$key = 0;
这导致错误。
您应该检查这样的密钥:
if($key !== false) {
// do sth with it
} else {
// does not exist
}
答案 1 :(得分:0)
因为$ coauthors中的条目没有值78. $ coauthors是一个数组数组,其中一个子数组的值为78.
所以你需要搜索所有的子阵列。
编辑:嗯,你确定你的print_r会产生一个类似的打印输出吗?看起来很奇怪......
答案 2 :(得分:0)
在此示例中,键值为0,因为这是数组中的索引,其中78是值。因此,当$ key = 0时,if($key)
将失败,即使$ key是有效的数组索引。
要检查有效性,您应该做的事情类似于以下
if (in_array(78, $coauthors)) {
$key = array_search(78, $coauthors);
// do what you want with $key and the $coauthors array
}