Cari nilai dalam tatasusunan berbilang dimensi dan kembalikan nilai dalam tatasusunan yang sama
P粉958986070
P粉958986070 2024-04-03 12:43:01
0
2
468

Saya cuba mencari nilai dalam tatasusunan milti dan selepas menemuinya, saya ingin mengembalikan kunci yang berbeza, tidak pasti bagaimana untuk menerangkan dengan lebih lanjut.

Saya mempunyai tatasusunan:

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
    ))

Saya cuba mencari tatasusunan mengikut [custom_tab_field_id] dan mengembalikan tatasusunan semasa [status].

Saya mencipta fungsi yang sepatutnya melakukan ini, tetapi ia sentiasa mengembalikan 0.

Ciri-ciri:

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;
    }

Kemudian hanya panggil fungsi dengan menghantar nilai

$returnedStatus = searchForStatus($field['custom_tab_field_id'], $tempArr);

P粉958986070
P粉958986070

membalas semua(2)
P粉416996828

boleh diselesaikan menggunakan fungsi array-filter. Itulah

$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;
}));

Ia akan mengembalikan keseluruhan tatasusunan daripada tatasusunan yang sepadan dengan 搜索 id.

Anda juga boleh menulis fungsi untuk ini

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

Menggunakan fungsi array_column, ini boleh diselesaikan dengan mudah dan sangat umum.

$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

Penyelesaian ini tidak termasuk pengendalian ralat, ia hanya menunjukkan prinsip. $arrKeyValue ialah tatasusunan, bagaimana pula:

array (
  17775 => 0,
  17776 => 0,
  17777 => 2,
)

Cuba sendirihttps://3v4l.org/SnVM4

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan