【发布时间】:2017-08-21 01:26:44
【问题描述】:
我有一个这样的数组
$a = [
[
"id" => "1",
"values" => [
"1",
"2"
]
],
[
"id" => "2",
"values" => [
"1",
"3"
]
],
[
"id" => "3",
"values" => [
"2",
"4"
]
],
[
"id" => "4",
"values" => [
"4",
"6"
]
],
];
搜索并返回 'values' 有 2 个的数组
$result = [
[
"id" => "1",
"values" => [
"1",
"2"
]
],
[
"id" => "3",
"values" => [
"2",
"4"
]
],
];
是的,我可以使用 for 循环,并使用 in_array 返回结果,只是想是否有优雅(更好)的方法来做到这一点?
$result = [];
foreach ($a as $datum) {
if (in_array('2', $datum['values'])) {
$result[] = $datum;
}
}
我试过array_search,但它不支持嵌套数组
array_search('2', array_column($a, 'values'));
【问题讨论】:
-
array_filter? php.net/manual/en/function.array-filter.php
-
哦,是的,有什么方法可以忽略使用 in_array 进行检查吗? array_filter($data, function($datum) { if (in_array('2', $datum['values'])) { return $datum; } });
-
应该是这样的:array_filter($data, function($datum) { return in_array('2', $datum['values']); });