Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组搜索总是给我假_Php_Arrays - Fatal编程技术网

Php 数组搜索总是给我假

Php 数组搜索总是给我假,php,arrays,Php,Arrays,因此,我试图搜索一个数组,由于某种原因,它总是给我假,即使名称数组中存在字母。这就是我想要它做的,搜索数组,如果存在匹配项,它应该将名称添加到$data数组中,并通过将其编码为JSON将其发送到AJAX。但我的如果总是给假 编辑:另一个问题中的答案没有解决这个问题,因为这将始终导致我的数组返回false $user = array( 0 => array( "id"=> 0, "photo"=>

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

编辑:另一个问题中的答案没有解决这个问题,因为这将始终导致我的数组返回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);
        }

    }
$user=array(
0=>数组(
“id”=>0,
“照片”=>“微笑”,
“name”=>“name One”,
),
1=>数组(
“id”=>0,
“照片”=>“微笑”,
“姓名”=>“姓名五”,
),
2=>数组(
“id”=>0,
“照片”=>“微笑”,
“name”=>“name Four”,
),
3=>数组(
“id”=>0,
“照片”=>“微笑”,
“名称”=>“名称三”,
),          
);
$wordToSearch=“N”;
$data=Array();
对于($i=0;$i$user[$i]['name'],
'img'=>$user[$i]['photo'],
'pos'=>$user[$i]['position'],
'Id'=>$user[$i]['Id']
)
);
echo json_编码($data);
}
}

我可能错了,但是

if(array_search($wordToSearch, array_column($user, 'name')) == false)
我想你想要

if (strpos($user[$i]['name'], $wordToSearch) !== false)
array\u列
用于获取所有用户名或所有用户ID
array\u search
用于搜索数组。。。但我想你是在搜索字符串


无关的。。。而不是使用
array\u push($data,array(…),使用
$data[]=array(…)由于没有函数调用,因此效率更高。。在我看来,编码和阅读更容易。

您可以使用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);

        } 
    }
}

使用
array\u search
时,必须使用identity操作符
==
,因为索引0被评估为可能与Add$i to strpos()重复。如果(strpos($user[$i]['name'],$wordToSearch)!==false)@besciualex:d'oh,你说得对。。。我以为他是在通过一个是最好的doe,foreach或是$Itis worked kindoish的用户进行搜索,它会添加任何人,例如,如果我的wordtosearch是三个,它会添加所有的名字