2016-12-14 3 views
0

У меня есть следующая настройка, где я пытаюсь использовать массив структуры массива. Я не уверен, как получить значение ключа после того, как значение найдено в массиве массивов.php Как получить ключевое значение массива массивов

$testboat = 'smallest boat'; 
$allboats = array(40=>array(1=>'big boat', 
          2=>'bigger boat' 
        ), 
        30=>array(1=>'little boat', 
          2=>'tiny boat', 
          3=>'smallest boat')); 

foreach($allboats as $boats){ 
    foreach($boats as $boat){ 
     if($testboat == $boat) { 

     /*looking to echo the key or value 30; */ 

     } 

    } 
} 
+6

'foreach ($ boats as $ key => $ boat)' будет началом. – deceze

+0

спасибо, но я считаю, что это неправильное место для начала. foreach ($ allboats as $ key => $ boats) обеспечивает правильное место. – DCR

ответ

1

Используйте $key => $value синтаксис foreach(). Кроме того, нет необходимости в петле через внутренние массивы:

foreach($allboats as $key => $boats){ 
    if(in_array($testboat, $boats)) { 
     echo $key; 
     break; //if you want to stop after found 
    } 
} 

Если вы хотите, чтобы внешний ключ и внутренний ключ:

foreach($allboats as $key => $boats){ 
    if(($inner_key = array_search($testboat, $boats)) !== false) { 
     echo "$key and $inner_key"; 
     break; //if you want to stop after found 
    } 
} 
+0

Могу ли я знать, что за '! == false' ?? – FullStack

+1

@FullStack Строго не равно false, потому что 'array_search' может возвращать 0 в качестве ключа, который будет слабо оценивать значение false. – AbraCadaver

0
$testboat = 'smallest boat'; 
$allboats = array(40=>array(1=>'big boat', 
          2=>'bigger boat' 
        ), 
        30=>array(1=>'little boat', 
          2=>'tiny boat', 
          3=>'smallest boat')); 

foreach($allboats as $id => $boats){ 
    //$id will be 40, then 30 
    foreach($boats as $id2 => $boat){ 
     //$id2 will be 1,2... 
     if($testboat == $boat) { 
     echo $id . '-' . $id2; 
     /*looking to echo the key or value 30; */ 

     } 
    } 
} 
0

Вы должны были бы сделать следующее:

foreach($allboats as key1 => $boats){ 
    foreach($boats as key2 => $boat){ 
Смежные вопросы