2015-09-20 2 views
-1

В следующем массиве у меня есть количество дней в качестве первого значения и количество часов, как второе значение:значения Достаньте из PHP многомерного массива

$myoptions = array ( 
    array("1 day",24), 
    array("2 days",48), 
    array("3 days",72) 
); 

Чтобы получить второй элемент из массива, я просто сделайте следующее:

echo $myoptions[0][1]; // returns 48 

Так что я могу сделать, чтобы найти индекс массива выше, используя одно из значений? Скажем, мне нужно знать, какое количество часов для массива = '3 дня'.

ответ

0

Невероятно, что массив, который вы показали нам, действительно то, что вам нужно.

массивы в PHP так называемые ассоциативные массивы, а это означает, что вы можете использовать что-либо индексировать их, а не только цифры:

$myoptions = array(
    "1 day" => 24, 
    "2 days" => 48, 
    "3 days" => 72, 
); 

Так,

echo $myoptions["3 days"] 

или

$days = "3 days"; 
echo $myoptions[$days]; 

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

На самом деле, но это не то, что мы можем решить, не зная, что вы пытаетесь достичь, но в большинстве случаев вам действительно нужно наоборот:

$myoptions = array(
    24 => "1 day", 
    48 => "2 days", 
    72 => "3 days", 
); 

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

+0

Великого полного осветления, большое спасибо! – PLazzo

0

Есть, вероятно, более эффективные способы спроектировать этот массив, но вот функция, которая должна дать вам то, что вы просили:

function gethours($x, $myoptions){ 
    foreach($myoptions as $o){ 
     if($o[0] == $x){ 
      return $o[1]; 
     } 
    } 
} 
echo gethours('3 days', $myoptions); 

Если столбец вы ищете в всегда то же самое вы могли бы просто пойти на ассоциативный массив и использовать этот столбец в качестве ключей массива.

1

Вы можете использовать array_column вроде как

echo array_column($myoptions,1,0)['3 days'];//72 

Demo

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