$arrayTypesAndSubtypes = Account::getTypesAndSubtypes();
$subtype = $request->input('subtype');

Oto dd z $ arrayTypesAndSubtypes , z którego chcę uzyskać górny (?) klucz” dla podana wartość.

array:2 [▼
  "REVENUE" => array:1 [▼
    0 => "REVENUE"
  ]
  "ASSET" => array:1 [▼
    0 => "BANK_ACCOUNT"
  ]
]

W tym przypadku poniższe zwraca wartość false (ponieważ Array_search () zwróci 0 dla REVENUE lub BANK_ACCOUNT ; jednak szukam zwrotu PRZYCHODÓW lub AKTYWÓW (nazywam to „górnym klawiszem” - czy jest na to bardziej odpowiednie określenie ? ).

Każda pomoc będzie mile widziana!

php
1
leym 1 wrzesień 2020, 23:43

2 odpowiedzi

Najlepsza odpowiedź

Zakładając, że znajdują się one w kluczu 0, po prostu wyodrębnij tę kolumnę, połącz z bieżącymi kluczami i wyszukaj:

$key = array_search('BANK_ACCOUNT', array_combine(array_keys($array), 
                                                  array_column($array, 0)));

var_dump(key);  //should return ASSET

Lub jeśli masz wiele pod każdym klawiszem, zapętl:

$key = false;
foreach($array as $key => $values) {
    if(array_search('BANK_ACCOUNT', $values)) { // or in_array('BANK_ACCOUNT', $values)
        break;
    }
}

var_dump($key);  //should return ASSET
1
AbraCadaver 1 wrzesień 2020, 22:35

Alternatywnie możesz najpierw „spłaszczyć” swoją tablicę za pomocą array_map:

$flattened = array_map(fn(array $val) => $val[0], $arr));

Następnie po prostu array_search to:

$key = array_search('BANK_ACCOUNT', $flattened);  // ASSET
0
Jeto 1 wrzesień 2020, 21:08