2013-02-22 3 views
1

привет, я хотел бы сократить мой код и хотел бы объединить две функции, которые точно делают то же самое.Как объединить две функции и вернуть массив?

так я получил это:

function a($a){ 
    global $db; 
    $query = $db->query("SELECT col_a FROM table WHERE Field= '$a' "); 
    $check = $query->fetch_assoc(); 
    $return_a = $check['col_a']; 
    return ($return_a); 
} 
function b($a){ 
    global $db; 
    $query = $db->query("SELECT col_b FROM table WHERE Field= '$a' "); 
    $check = $query->fetch_assoc(); 
    $return_b = $check['col_b']; 
    return ($return_b); 
} 

так я думал, что я мог бы объединить и в одно:

function ab($a){ 
global $db; 
$query = $db->query("SELECT col_a, col_b FROM table WHERE Field= '$a' "); 
$check = $query->fetch_assoc(); 
$return_array = array($check['col_a'], $check['col_b']); 
return ($return_array); 
} 

это не похоже на работу. я попытался зачитав массив с помощью:

$db_data = ab($a); 

echo $db_data['col_a']; 
echo $db_data['col_b']; 

так, если есть кто-то, кто мог бы сказать, что я делаю неправильно, я действительно был бы признателен.

спасибо большое.

ответ

1

, если вы сделаете это (то же самое, как ваш код), вы можете получить доступ к нему, как

function ab($a){ 
    global $db; 
    $query = $db->query("SELECT col_a, col_b FROM table WHERE Field= '$a' "); 
    $check = $query->fetch_assoc(); 
    $return_array = array($check['col_a'], $check['col_b']); 
    return ($return_array); 
} 



$db_data = ab($a); 

echo $db_data[0]; // will return 'col_a'; 
echo $db_data[1]; // will return 'col_b'; 

вы должны сделать это

function ab($a){ 
    global $db; 
    $query = $db->query("SELECT col_a, col_b FROM table WHERE Field= '$a' "); 
    $check = $query->fetch_assoc(); 
    //$return_array = array($check['col_a'], $check['col_b']); 
    return ($check); 
} 

и когда вас необходимо получить

$db_data = ab($a); 

echo $db_data['col_1']; 
echo $db_data['col_1']; 
+0

Большое спасибо за помощь. хорошего дня. – bonny

+0

приветствуются –

0
list($col_a, $col_b) = ab($a); 
echo $col_a; 
echo $col_b; 
1

Вы не создаете массив с именем, поэтому ваш результат индексируется с $db_data[0] и $db_data[1]

Заменить: $return_array = array($check['col_a'], $check['col_b']);

С: $return_array = array('col_a' => $check['col_a'], 'col_b' => $check['col_b']);

Или еще более простой просто верните $check;

1

Попробуйте это:

$db_data = ab($a); 

echo $db_data[0]; 
echo $db_data[1]; 
Смежные вопросы