Единственный способ сделать это - выполнить итерацию по каждому элементу и выполнить линейный поиск
$i = -1;
foreach ($myArray as $key => $item){
if ( $item[0] == 'buffaloes' ){
$i = $key;
break;
}
}
//$i now holds the key, or -1 if it doesn't exist
Как видите, это действительно неэффективно, так как если в вашем массиве 20 000 предметов, а 'буйволы' - последний элемент, вам нужно сделать 20 000 сравнений.
Другими словами, вам нужно изменить структуру данных так, чтобы вы могли что-то искать с помощью ключа, например, лучшим способом может быть перестановка массива так, чтобы в качестве ключа вы искали строку, которую вы ищете, например:
$myArray['buffaloes'] = 76;
Что намного быстрее, поскольку он использует лучшую структуру данных, так что ему нужно только самое большее n log n
сравнений (где n - количество элементов в массиве). Это потому, что массив на самом деле является упорядоченной картой.
Другой вариант, если вы знаете точное значение искомого значения, это использовать array_search