У меня есть PHP-массив, который выглядит так:
$array = Array ( [teamA] => Array ( [188555] => 1 ) [teamB] => Array ( [188560] => 0 ) [status] => Array ( [0] => on ) )
В приведенном выше примере я могу использовать следующий код:
echo $array[teamA][188555];
для получения значения 1.
Вопрос теперь, есть ли способ получить 188555 аналогичным образом;
Команды keysA, teamB и статус всегда одинаковы в массиве. Кроме того, массивы teamA и teamB всегда содержат только одну запись.
Так есть способ получить только ключ первого элемента массива teamA и teamB?
echo array_keys($array['teamA'])[0];
Обратитесь к this
за подробной информацией с официального сайта PHP.
Более простой:
echo key($array['teamA']);
Больше информации
foreach($array as $key=>$value) { foreach($value as $k=>$v) { echo $k; } }
ИЛИ использовать key
echo key($array['teamA']);
Используйте два foreach
foreach($array as $key => $value){ foreach($value as $key1 => $value2){ echo $key1; } }
Таким образом, вы также можете масштабировать приложение для использования в будущем. Если будет больше элементов, то это также не сломает приложение.
Вы можете использовать array_flip для обмена ключами и значениями. Таким образом, массив ('12345' => 'foo') становится массивом ('foo' => '12345').
Подробности о array_flip можно изучить здесь .
Я бы предложил использовать список ($ key, $ value) = each ($ array ['teamA']), так как вопрос был как для ключа, так и для значения. Однако вы не сможете получить второе или третье значение массива без цикла. Возможно, вам придется сначала сбросить массив, если вы каким-то образом изменили его итератор.
Я полагаю, что самый простой способ сделать это – использовать array_keys ()?
Так вы бы сделали:
$teamAKey = array_shift(array_keys($array['TeamA'])); $teamBKey = array_shift(array_keys($array['TeamB']));
Очевидно, что ваш подход будет зависеть от того, сколько раз вы намереваетесь это сделать.
Подробнее о array_keys и array_shift .