use*_*695 4 php arrays multidimensional-array
我想在条件中使用两个值搜索多维数组中的键.
我知道如何使用单个搜索条件搜索多维数组:
$key = array_search($journee, array_column($data,'journee'));
Run Code Online (Sandbox Code Playgroud)
但不仅仅是那个.这是我的阵列设置:
Array
(
[0] => Array
(
[pseudo] => titi
[journee] => 11
[pts] => 3
)
...
[10] => Array
(
[pseudo] => test
[journee] => 10
[pts] => 6
)
[11] => Array
(
[pseudo] => test
[journee] => 11
[pts] => 4
)
)
Run Code Online (Sandbox Code Playgroud)
如果我只11输入array_search和array_column输入密钥journee,它将返回0.
我也想添加pseudo搜索条件(键journee和pseudo应搜索特定值).
我怎么做到这一点?
只有一个简单的功能,这是不可能的.
这是两个解决方案:
$search = ['pseudo' => 'test', 'journee' => 10];
$keys = array_keys(
array_filter(
$array,
function ($v) use ($search) { return $v['pseudo'] == $search['pseudo'] && $v['journee'] == $search['journee']; }
)
);
$key = $keys[0];
Run Code Online (Sandbox Code Playgroud)
但是如果你只需要找到一个密钥我建议使用foreach&break,因为你不必遍历所有值的数组(使用array_filter时会发生什么),并在找到某些数据时立即停止:
$key = false;
$search = ['pseudo' => 'test', 'journee' => 10];
foreach ($array as $k => $v) {
if ($v['pseudo'] == $search['pseudo'] && $v['journee'] == $search['journee']) {
$key = $k;
// key found - break the loop
break;
}
}
Run Code Online (Sandbox Code Playgroud)