Maison > Questions et réponses > le corps du texte
J'essaie de trouver une valeur dans un tableau de tableaux milti et après l'avoir trouvée, je veux renvoyer une clé différente, je ne sais pas comment expliquer davantage.
J'ai un tableau :
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 ))
J'essaie de trouver un tableau par [custom_tab_field_id] et de renvoyer le tableau actuel [status].
J'ai créé une fonction qui est censée faire cela, mais elle renvoie toujours 0.
Caractéristiques :
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; }
Ensuite, appelez simplement la fonction en passant la valeur
$returnedStatus = searchForStatus($field['custom_tab_field_id'], $tempArr);
P粉4169968282024-04-04 10:24:16
peut être résolu en utilisant la fonction array-filter
. C'est
$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; }));
Il renverra l'intégralité du tableau à partir du tableau correspondant à l'identifiant 搜索
.
Vous pouvez également écrire une fonction pour cela
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
En utilisant la fonction array_column, cela peut être facilement résolu et très général.
$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
Cette solution n'inclut pas la gestion des erreurs, elle montre uniquement le principe. $arrKeyValue est un tableau, que diriez-vous de :
array ( 17775 => 0, 17776 => 0, 17777 => 2, )
Essayez-le vous-mêmehttps://3v4l.org/SnVM4