2017-05-15 51 views
6

Mam problem z zwracaniem pierwszego klucza tablicy w foreach. Mogę zwrócić klucz $, ale nie mogę się zorientować na zwrócenie tylko pierwszego klucza $.Zwróć pierwszy klucz w foreach

<td> 
    <div align="center"> 
     <span class="formlist"> 
      <select id="plant" name="plant[]" class="form-control" multiple="multiple"> 
      <?php 
       $query_plant = "SELECT * FROM plant WHERE plant_enable=1 ORDER BY plant_name"; 
       $rs_plant = DB_Query($query_plant); 
       while ($row_plant = DB_FetchRow($rs_plant)) { 
        $plant.='<option name='.$row_plant["plant_shortname"].' value='.$row_plant["plant_id"].'>' .$row_plant["plant_name"].' ['.$row_plant["plant_id"].']</option>'; 
       } 
       mysql_free_result($rs_plant); 
       echo $plant; 
      ?> 
      </select> 
     </span> 
    </div> 
</td> 

if(isset($_POST['plant'])) {   
    $checkbox1 = $_POST['plant']; 
    $chk=""; 
    $stf_sql = "SELECT * FROM test_plant WHERE staff_id = '".$STAFF_ID."'"; 
    $stf_res = DB_Query($stf_sql);  
    if(DB_RowsReturned($stf_res) > 0) { 
     $del_sql = "DELETE FROM test_plant WHERE staff_id = '".$STAFF_ID."'"; 
     $del_res = DB_Query($del_sql); 
    }  
    foreach($checkbox1 as $chk1) 
    { 
     $in_ch="insert into test_plant(staff_id, plant_name, submit_dt) values ('$STAFF_ID','$chk1', Now())"; 
     $in_res = DB_Query($in_ch);     
     $abc = mysql_query("SELECT * FROM test_plant");  
     while($abc_row = mysql_fetch_assoc($abc)) { 
      foreach($abc_row as $key => $value) { 
       echo $key; //return first key here 
      }   
     }  
    }  
} else { 
    echo "OK"; 
} 

Próbowałem powrocie $key[0] ale zwraca tylko pierwszą literę. Chcę wrócić 'p_id'

My table structure :

+0

zgadywania z obrazu, chcesz wrócić nazwę kolumny ?? – user2860957

+0

@ user2860957 yes. przy okazji edytowałem mój kod. – NFSJ

+0

użyj tej linii, otrzymasz podpowiedź 'echo mysql_field_name ($ abc, 0)', nie ma potrzeby pętli foreach – user2860957

Odpowiedz

4

Jak to,

$keys = array_keys($checkbox1); 
print_r($keys); // for all keys 
echo $keys[0]; // It will echo first key of the array. 
+0

I tak edytowałem mój kod. I próbowałem wstawić twój kod do nowego kodu, ale zwraca Array ([0] => 0) 0 – NFSJ

+0

Co to jest ouput dla 'print_r ($ checkbox1);' – Naga

+0

Zmieniłem sposób, w jaki zasugerowałeś i pomógł także! Dziękuję bardzo: D – NFSJ

0

Można zresetować wewnętrzny wskaźnik tablicy i następnie dostać klucz bieżącego elementu:

reset($checkbox1); 
echo key($checkbox1); 

(Umieść to poza zewnętrzną pętlą while).

Albo można nawet uzyskać wszystkie klucze tablicy, a następnie chwycić bieżący klucz:

echo current(array_keys($checkbox1));