Rechercher une valeur dans un tableau multidimensionnel et renvoyer la valeur dans le même tableau
P粉958986070
P粉958986070 2024-04-03 12:43:01
0
2
507

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粉958986070
P粉958986070

répondre à tous(2)
P粉416996828

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粉921130067

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal