Php 在数组中查找字符串
好的,我正在查询数据库并从IP地址列表生成一个数组:Php 在数组中查找字符串,php,arrays,Php,Arrays,好的,我正在查询数据库并从IP地址列表生成一个数组: $q = 'SELECT ip FROM proxy'; $r = mysqli_fetch_all($con->query($q), MYSQLI_ASSOC); 返回的数组如下所示: Array ( [0] => Array ( [ip] => 1.202.244.222 ) [1] => Array (
$q = 'SELECT ip FROM proxy';
$r = mysqli_fetch_all($con->query($q), MYSQLI_ASSOC);
返回的数组如下所示:
Array
(
[0] => Array
(
[ip] => 1.202.244.222
)
[1] => Array
(
[ip] => 1.226.238.136
)
[2] => Array
(
[ip] => 1.228.231.247
)
[3] => Array
(
[ip] => 1.238.106.137
)
[4] => Array
(
[ip] => 1.238.155.191
)
但是如果我想找到上面列表中的第一个或任何IP,出于某种原因,它什么也找不到:
$ip = "1.202.244.222";
if(in_array($ip,$r)) {
echo "gotcha";
}
我做错了什么?这是一个数组数组。。。把它折叠起来,它就会工作了。这里有几个选项:这是一个数组数组。。。把它折叠起来,它就会工作了。这里有几个选项:对于这种情况,最灵活的方法是使用用户定义的比较函数:
<?php
$needle = '1.202.244.222';
$haystack = [
[
'ip' => '1.202.244.222'
],
[
'ip' => '1.226.238.136'
],
[
'ip' => '1.228.231.247'
],
[
'ip' => '1.238.106.137'
],
[
'ip' => '1.238.155.191'
]
];
$result = array_filter($haystack, function($entry) use ($needle) {
return isset($entry['ip']) && $needle === $entry['ip'];
});
print_r($result);
对于此类情况,最灵活的方法是使用用户定义的比较函数:
<?php
$needle = '1.202.244.222';
$haystack = [
[
'ip' => '1.202.244.222'
],
[
'ip' => '1.226.238.136'
],
[
'ip' => '1.228.231.247'
],
[
'ip' => '1.238.106.137'
],
[
'ip' => '1.238.155.191'
]
];
$result = array_filter($haystack, function($entry) use ($needle) {
return isset($entry['ip']) && $needle === $entry['ip'];
});
print_r($result);
被数组中的数组搞糊涂了,我一开始没注意到。 多亏了Zeth的指针,我通过添加以下内容将数组折叠成一个数组,从而使其正常工作:
$r0 = array_column($r, 'ip');
然后:
if(in_array($ip,$r0)) {
echo "gotcha";
}
被数组中的数组搞糊涂了,我一开始没注意到。 多亏了Zeth的指针,我通过添加以下内容将数组折叠成一个数组,从而使其正常工作:
$r0 = array_column($r, 'ip');
然后:
if(in_array($ip,$r0)) {
echo "gotcha";
}
你的阵列条件是错误的
$ip_find = '1.202.244.222';
$ip_values = [
[
'ip' => '1.202.244.222'
],
[
'ip' => '1.226.238.136'
],
[
'ip' => '1.228.231.247'
],
[
'ip' => '1.238.106.137'
],
[
'ip' => '1.238.155.191'
]
];
foreach ($ip_values as $key => $value) {
foreach ($value as $key => $ip) {
if ($ip==$ip_find) {
echo $ip." Gocha";
break;
}
}
}
你的阵列条件是错误的
$ip_find = '1.202.244.222';
$ip_values = [
[
'ip' => '1.202.244.222'
],
[
'ip' => '1.226.238.136'
],
[
'ip' => '1.228.231.247'
],
[
'ip' => '1.238.106.137'
],
[
'ip' => '1.238.155.191'
]
];
foreach ($ip_values as $key => $value) {
foreach ($value as $key => $ip) {
if ($ip==$ip_find) {
echo $ip." Gocha";
break;
}
}
}
您可以使用foreach执行此操作:
$r = [
[
'ip' => '1.202.244.222'
],
[
'ip' => '1.226.238.136'
],
[
'ip' => '1.228.231.247'
],
[
'ip' => '1.238.106.137'
],
[
'ip' => '1.238.155.191'
]
];
$ip = "1.202.244.222";
foreach($r as $elem)
{
if($elem['ip'] == $ip)
{
echo "gotcha";
break;
}
}
您可以使用foreach执行此操作:
$r = [
[
'ip' => '1.202.244.222'
],
[
'ip' => '1.226.238.136'
],
[
'ip' => '1.228.231.247'
],
[
'ip' => '1.238.106.137'
],
[
'ip' => '1.238.155.191'
]
];
$ip = "1.202.244.222";
foreach($r as $elem)
{
if($elem['ip'] == $ip)
{
echo "gotcha";
break;
}
}
这是一个数组中的一个数组。。。把它折叠起来,它就会工作了。这里有几个选项:它是一个数组中的一个数组。。。把它折叠起来,它就会工作了。这里有几个选项: