2012-04-05 4 views
0
$result = $this->db->query($query)->result_array(); 


     if($result[9]['b_code'] != FALSE) 
      { 

     $result_array = array(
          '0' => $result[0]['b_code'], 
          '1' => $result[1]['b_code'], 
          '2' => $result[2]['b_code'], 
          '3' => $result[3]['b_code'], 
          '4' => $result[4]['b_code'], 
          '5' => $result[5]['b_code'], 
          '6' => $result[6]['b_code'], 
          '7' => $result[7]['b_code'], 
          '8' => $result[8]['b_code'], 
          '9' => $result[9]['b_code'] 
         ); 


       return $result_array; 
      } 
     else 
      return FALSE; 

Он извлекает 10 данных в строках и делает их новым массивом как $ result_array;PHP, проверка значений из данных My-Sql

Иногда, это не будет иметь 10 результатов и может извлечь 5 или 8.

Итак, я хочу проверить погоду есть значение последнего, что $ результат [9] [ 'b_code] или не.

Должен ли я использовать isset?

ответ

2

Должен ли я использовать isset?

Да, isset­Docs правильный язык построить, если вы хотите, чтобы проверить, если значение установлено (например, установить и не NULL­Docs).

В вашем конкретном случае, вы можете также проверить длину $result, что делается с count­Docs:

$numberOfElements = count($result); 

Некоторые примеры кода с isset:

if (!isset($result[9])) 
{ 
    return FALSE; 
} 

return array_map(function($v) {return $v['b_code'];}, $result); 

Обратите внимание, что в этом примере мы» re, чтобы повторить себя 10 раз, только чтобы скопировать каждый элемент b_code. Вместо этого это делается с помощью сопоставления массива, см. array_map­Docs.

, вероятно, более читаемым вариант, на этот раз с count:

if (10 != count($result)) 
{ 
    return FALSE; 
} 

$resultArray = array(); 
foreach ($result as $v) 
{ 
    $resultArray[] = $v['b_code']; 
} 
return $resultArray; 

Этот вариант использования foreach­Docs, чтобы предотвратить присвоение 10 элементов по одному.

0

Вам не нужно снова назначать весь массив новому.

$result_array = $this->db->query($query)->result_array(); 

    if(array_key_exist($result_array, 9) && isset($result_array[9]['b_code'])) { 
     return $result_array; 
    } 

return false; 
+1

TS представлен только в 'b_code'. – hakre

+0

@hakre кажется, я неправильно понял вопрос – safarov

+0

Ну, идея по-прежнему хороша для карты, а не для копирования 10 элементов по одному. – hakre

0

вы можете проверить его по количеству функции тоже ..

if(count($result) == 10 && $result[9]['b_code'] != '') { 
    // your code... 

} 
0
$last_index = sizeof($result) - 1; 

if(!$result[$last_index]['b_code']){ 
//... 
} 
0

Разве вы не можете просто сделать это?

$result = $this->db->query($query)->result_array(); 

$result_array = array(); 

foreach($result as $key=>$value) { 
    $result_array[$key] = $value['b_code']; 
} 

Это должно работать для любого количества результатов.

Смежные вопросы