Rumah  >  Soal Jawab  >  teks badan

Cari nilai dalam tatasusunan berbilang dimensi dan kembalikan nilai dalam tatasusunan yang sama

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粉958986070P粉958986070172 hari yang lalu369

membalas semua(2)saya akan balas

  • P粉416996828

    P粉4169968282024-04-04 10:24:16

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

    balas
    0
  • P粉921130067

    P粉9211300672024-04-04 09:24:48

    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

    balas
    0
  • Batalbalas