array_search总是给我假

时间:2016-02-24 14:34:24

标签: php arrays

所以我试图搜索一个数组,它总是因为某些原因而给我假,即使这个字母存在于名字数组中。这就是我想要它做的,搜索数组,如果存在匹配,它应该将名称添加到$ data数组,并通过将其编码为JSON将其发送到AJAX。但我的IF总是假的

编辑:其他问题的答案没有解决这个问题,因为这将导致我的数组返回false

    $user = array(


        0 => array(

            "id"=> 0,   
            "photo"=>"smily",
            "name"=>"Name One",
            ),

        1 => array(

            "id"=> 0,   
            "photo"=>"smily",
            "name"=>"Name Five",
            ),

        2 => array(

            "id"=> 0,   
            "photo"=>"smily",
            "name"=>"Name Four",
            ),

        3 => array(

            "id"=> 0,   
            "photo"=>"smily",
            "name"=>"Name Three",
            ),          
       );

$wordToSearch = "N";
$data = Array();

    for($i = 0; $i < count($user); $i++)
    {
        if(array_search($wordToSearch, array_column($user, 'name')) == false)
        {
        array_push($data, array(    
                        'name' => $user[$i]['name'],
                        'img' => $user[$i]['photo'],
                        'pos' => $user[$i]['position'],
                        'Id' => $user[$i]['id']             
                        )
                        );
        echo json_encode($data);
        }

    }

2 个答案:

答案 0 :(得分:2)

我可能错了,但不是

if(array_search($wordToSearch, array_column($user, 'name')) == false)

我想你想要

if (strpos($user[$i]['name'], $wordToSearch) !== false)

array_column用于获取所有用户名或所有用户ID array_search用于搜索数组...但我认为您正在尝试搜索字符串。

不相关...而不是使用array_push($data, array(...));,使用$data[] = array(...);它会更有效率,因为没有函数调用...在我看来,它是&#39;更容易编码和读取。

答案 1 :(得分:0)

您可以使用strpbrk - strpbrk - 在字符串中搜索任何一组字符

foreach ($user as $val) {
    if (strpbrk($val['name'], $wordToSearch) != false) {
         array_push($data, array(    
                        'name' => $val['name'],
                        'img' => $val['photo'],
                        'pos' => $val['position'],
                        'Id' => $val['id']             
                        )
                        );
        echo json_encode($data);

        } 
    }
}