数组搜索不起作用

时间:2011-07-13 15:01:08

标签: php arrays wordpress

我有下面的代码。

$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";
}

帮助???

3 个答案:

答案 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
}