Heim > Fragen und Antworten > Hauptteil
Ich versuche, einen Wert in einem Array von Milti-Arrays zu finden, und nachdem ich ihn gefunden habe, möchte ich einen anderen Schlüssel zurückgeben, weiß aber nicht, wie ich das weiter erklären soll.
Ich habe ein Array:
tempArray( [0] => Array ( [id] => 18460 [field_id] => 14 [parent_id] => 165 [custom_tab_field_id] => 17775 [status] => 0 [field_type] => 0 ) [1] => Array ( [id] => 18461 [field_id] => 2 [parent_id] => 165 [custom_tab_field_id] => 17776 [status] => 0 [field_type] => 2 ) [2] => Array ( [id] => 18462 [field_id] => 12 [parent_id] => 165 [custom_tab_field_id] => 17777 [status] => 2 [field_type] => 2 ))
Ich versuche, ein Array nach [custom_tab_field_id] zu finden und das aktuelle Array [Status] zurückzugeben.
Ich habe eine Funktion erstellt, die das tun soll, aber sie gibt immer 0 zurück.
Eigenschaften:
function searchForStatus($id, $array){ $returnedStatus = "0"; foreach ($array as $key => $val){ if ($val['custom_tab_field_id'] == $id){ return $returnedStatus = $array[$key]['status']; } } return $returnedStatus; }
Dann rufen Sie einfach die Funktion auf, indem Sie den Wert übergeben
$returnedStatus = searchForStatus($field['custom_tab_field_id'], $tempArr);
P粉4169968282024-04-04 10:24:16
可以使用array-filter
函数来解决。即
$a1 = [ ['id' => 1, 'status', 'active'], ['id' => 2, 'status', 'in-active'] ]; $search = 2; print_r(array_filter($a1, function ($object) use ($search) { return $object['id'] == $search; }));
它将从与搜索
id 匹配的数组中返回整个数组。
你也可以为此编写一个函数
function search($data, $searchValue, $searchField, $returnField) { $filter = array_filter($data, function ($object) use ($searchValue, $searchField) { return $object[$searchField] == $searchValue; }); return count($filter) > 0 ? $filter[0][$returnField] : null; }
P粉9211300672024-04-04 09:24:48
使用 array_column 函数,这可以轻松实现已解决并且非常通用。
$array = [ ['id' => 18460, 'field_id' => 14, 'parent_id' => 165, 'custom_tab_field_id' => 17775, 'status' => 0, 'field_type' => 0], ['id' => 18460, 'field_id' => 2, 'parent_id' => 165, 'custom_tab_field_id' => 17776, 'status' => 0, 'field_type' => 2], ['id' => 18460, 'field_id' => 14, 'parent_id' => 165, 'custom_tab_field_id' => 17777, 'status' => 2, 'field_type' => 2], ]; $findKey = 'custom_tab_field_id'; $getKey = 'status'; $findVal = 17777; $arrKeyValue = array_column($array,$getKey,$findKey); $status = $arrKeyValue[$findVal]; //2
该解决方案不包含错误处理,仅展示原理。 $arrKeyValue 是一个数组,如何:
array ( 17775 => 0, 17776 => 0, 17777 => 2, )