array_search找不到所有值

Bra*_*rad 2 php arrays search

Array
(
    [0] => 159042564114859_722842697734840
    [1] => 180466813056_10152147419628057
    [2] => 201613513237343_622449081153782
)


$post_ids = array('201613513237343_622449081153782', '180466813056_10152147419628057', '159042564114859_722842697734840');

foreach($posts->data as $post)
{
    if(array_search( $post->id, $post_ids ))
    {
        print '<p>FOUND ' . $post->id . '<p>';

    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

FOUND 159042564114859_722842697734840

FOUND 180466813056_10152147419628057
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它没有检测到数组中的第三项,索引为3,值为201613513237343_622449081153782

这输出:

foreach($posts->data as $post)
{
    print '<p>post->id: ' . $post->id . '</p>'; 
}

post->id: 159042564114859_722842697734840

post->id: 180466813056_10152147419628057

post->id: 201613513237343_622449081153782
Run Code Online (Sandbox Code Playgroud)

所以我知道数据在那里,我在使用array_search函数做错了什么?

Hal*_*yon 5

它不输出第一个帖子ID因为array_search返回index,即0.

将支票更改为:

if (array_search($post->id, $post_ids) !== false) {
Run Code Online (Sandbox Code Playgroud)

与... 明确比较false.


0 == false; // true
0 === false; // false
Run Code Online (Sandbox Code Playgroud)

PHP对它的参数和返回值不是很好,但是大多数搜索函数都使用某种"未找到"值.-1,false并且null是用于此目的的常用值.