Вам не нужно звонить array_values()
, подмассивы уже проиндексированы.
$person1 = [
'notes' => [1,2,3]
];
$person2 = [
'notes' => [4,5,6]
];
$data=[$person1,$person2];
foreach ($data as $student) {
$Array[] = $student['notes'][0];
}
// now $Array = [1, 4];
echo calculateAverageScore($Array); // 2.5
Это передаст все значения первого элемента вашей пользовательской функции в виде одномерного массива.
Если вы хотите усреднить баллы по каждому человеку ...
foreach ($data as $student) {
echo calculateAverageScore($student['notes']);
}
// displays 2 then 5
Можно зарегистрироваться в MSDN: блок, содержащий класс, упоминается право наверху:
Класс StringCollection
Представляет набор строк.
Пространство имен: Система. Наборы. Специализированный
Блок: система (в System.dll)
То, что я обычно делаю, щелкают правой кнопкой по "StringCollection" в редакторе и нажимают "Go To Definition" затем, окно откроется с заголовком "StringCollection [от Метаданных]", затем я просто толплюсь, указатель мыши к заголовку и подсказке появляется с местоположением блока, куда класс прибывает из.
Обычно Вы не можете начиная с большинства блоков содержать несколько пространств имен. Возьмите пример System.Core.dll, который был добавлен в .net 3.5. Это добавило дополнительные классы к Системе. Наборы. Универсальный. Некоторые исходные классы жили в mscorlib.dll Один быстрый способ узнать, хотя должен будет открыть вкладку "Object Browser" в VisualStudio, и нажать небольшую кнопку на панели инструментов "Settings" и делает ure "Контейнерами Представления", проверяется.