2016-01-19 2 views
0
function returnStatus($status) 
{ 
    $supportStatus = [ 
     0 => 'open', 
     1 =>'half closed', 
     9 => 'closed', 
    ]; 

    $key = array_search($status, $supportStatus); 
    return $supportStatus[$key]; 
} 

Мой скрипт возвращает 0 (открытый), даже если я отправил 9 как int в функцию.поиск массива для ключа PHP

+0

Что вы настройки как '$ status' вызывающему' returnStatus'? –

+0

$ status is int (число). –

+0

Вам не нужно было проходить через 'open',' closed', так как 'array_search' ищет значения массива для текстового совпадения? –

ответ

1

Что вы ищете является array_key_exists()

function returnStatus($status){ 

    $supportStatus = [ 
     0 => 'open', 
     1 =>'half closed', 
     9 => 'closed', 
    ]; 

    $key = array_key_exists($status, $supportStatus); 
    return $supportStatus[$key]; 
} 

Кроме того, вы даже выигрыш нужно сделать это жонглирование, если в конце концов вы заинтересованы в значение, хранящееся в ячейке этого ключа.

Я бы просто сделать это в одной строке, как показано ниже ..

echo isset($supportStatus[$status]) ? $supportStatus[$status]: false; 

или с оператором присваивания

$output = isset($supportStatus[$status]) ? $supportStatus[$status]: ''; 
0

Я надеюсь, что это то, что вы ищете,

function searchColor($color){ 
    $array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 
    $key = array_search($color, $array); 
    return $array[$key];  
} 
echo searchColor('blue'); 

Обновить код и посмотреть, если он работает, here is the reference.

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