我正在尝试在类似于此的数组上执行in_array(),
Array
(
[0] => Array
(
[id] => 40
[name] => Simon E Ainley
[location] => Huddersfield
[talent] => voice over
[image] => ./media/uploads/headshots/width_60_249613_10150280293315435_717615434_9570480_8341358_n.jpg
)
)
我想检查是否有任何数组的['id']
与var匹配,in_array()是否正确?我可以在像上面那样的多维数组中使用它吗?
答案 0 :(得分:0)
如果您正在寻找特定的id
索引,那么in_array()
将无法执行您想要执行的操作,因为该函数对值而不是键进行操作。这意味着如果您正在搜索特定的id,如果其他键恰好具有您要搜索的值,则该函数将返回true,即使没有id
具有该值。
如果您的多维数组总是只是一维数组的数组,那么您可以执行以下操作:
function find_kv_pair($array, $key, $value) {
foreach($array as $arr) {
if ( is_array($arr) &&
array_key_exists($key, $arr) &&
$arr[$key] == $value;
) {
return $arr;
}
}
return false;
}
然后你会这样称呼它:
if (find_kv_paid($my_array, "id", 123)) !== false) {
// do something with the returned array
} else {
// nothing found. handle the condition
}
如果数组的键/值对为'id' => 123
,那么该子数组将被返回并处理,否则您将得到一个错误,您可以相应地处理它。
此函数获取您的子数组数组,并检查每个子数组以查看它是否具有与您的搜索值匹配的id
键。如果找到一个,则返回该子数组,如果没有子数组则返回false。如果您不想要整个数组,请将其修改为返回您喜欢的任何内容。
如果你的子数组本身可以有子数组,你可以只重写函数来递归。