array_key_exists() не работает в модуле

Главные вкладки

Аватар пользователя flatron flatron 18 июля 2013 в 9:20

Привет.

Функция проверяет id термина и в случае совпадения присваивает ему вес:

<?php
    $cat_weight 
= array(
        
'492'  => -5,
        
'493' => -4,
        
'387' => -3,
        
'494' => -2,
        
'1479' => -1,
        
'499' => 1,
        
'430' => 2,
    );
    if (
array_key_exists(intval($termID), $cat_weight)) {
        
$tid sync_element_get_from_sync($termID);
        if (
$tid) {
            
db_query('UPDATE {term_data} SET weight = %d WHERE tid = %d'$cat_weight[$termID], $tid);
        }
    }
?>

Прикол в том, что функция работает в отдельном файле с подключенным bootstrap.inc и не работает в модуле.
Если кто знает причину глюка подскажите.

Комментарии

Аватар пользователя flatron flatron 18 июля 2013 в 9:41

Код не весь, загвоздка в array_key_exists(), в том что он глючит в модуле.
$termID - 100% целое число, для полной уверенности обернул в intval().

Аватар пользователя Chyvakoff Chyvakoff 18 июля 2013 в 10:37
$termID = 499;
$cat_weight = array(
        '492'  => -5,
        '493' => -4,
        '387' => -3,
        '494' => -2,
        '1479' => -1,
        '499' => 1,
        '430' => 2,
);
if (array_key_exists(intval($termID), $cat_weight)) {
        echo 'ok';
}
if (array_key_exists((int)$termID, $cat_weight)) {
        echo 'ok';
}

У меня оба варианта сработали.
dpm($termID); сделай перед объявлением массива.