поиск по массиву не работает - PullRequest
1 голос
/ 13 июля 2011

У меня есть следующий код.

$coauthors = get_post_meta( $post_id, "coAuthors" );

print_r($coauthors);

нормально, результат print_r равен

Array ( [0] => 78 ) Array ( [0] => 78 )

Теперь мой идентификатор пользователя равен 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 ]

6 голосов
/ 13 июля 2011
$key = 0;

Это приводит к ложному.

Вы должны проверить ключ следующим образом:

if($key !== false) {
    // do sth with it
} else {
    // does not exist
}
0 голосов
/ 13 июля 2011

В этом примере значение ключа будет 0, потому что это индекс в массиве, где 78 - это значение.Таким образом, говорит, что if($key) потерпит неудачу, когда $ key = 0, даже если $ key является действительным индексом массива.

Чтобы проверить правильность, вы должны сделать что-то вроде следующего:

if (in_array(78, $coauthors)) {
    $key = array_search(78, $coauthors);
    // do what you want with $key and the $coauthors array
}
0 голосов
/ 13 июля 2011

Поскольку ни одна запись в $ coauthors не имеет значения 78. $ coauthors является массивом массивов, а один из подмассивов имеет значение 78.

Так что вам нужно найти всеподмассивы.

edit: хм, вы уверены, что ваш print_r приводит к распечатке, которая выглядит так?Выглядит странно ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...