所以我试图搜索一个数组,它总是因为某些原因而给我假,即使这个字母存在于名字数组中。这就是我想要它做的,搜索数组,如果存在匹配,它应该将名称添加到$ 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);
}
}
答案 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);
}
}
}