как посчитать вложенный объект внутри массива в php

#php #arrays #laravel #object

#php #массивы #laravel #объект

Вопрос:

У меня есть такие данные :

 array: [
   0: [
     0: {fruits: "apple", price: "15000"},
     1: {fruits: "orange", price: "12000"},
   ],
   1: [
     0: {fruits: "grape", price: "13000"},
     1: {fruits: "chery", price: "14000"},
     2: {fruits: "longan", price: "12000"},
   ],
   2: [
     0: {fruits: "manggo", price: "16000"},
     1: {fruits: "dragon fruit", price: "17000"},
     2: {fruits: "avocado", price: "18000"},
     3: {fruits: "coconut", price: "19000"},
   ],
]
 

Я хочу спросить, как узнать длину вторых данных, я уже пытаюсь использовать вложенный цикл, но результат не совпадает с моими ожиданиями, мои данные выглядят так :

 array: [
  0: {fruits: "apple", price: "15000"},
  1: {fruits: "orange", price: "12000"},
  2: {fruits: "grape", price: "13000"},
  3: {fruits: "chery", price: "14000"},
  4: {fruits: "longan", price: "12000"},
  5: {fruits: "manggo", price: "16000"},
  6: {fruits: "dragon fruit", price: "17000"},
  7: {fruits: "avocado", price: "18000"},
  8: {fruits: "coconut", price: "19000"},
]
 

и когда я пытаюсь подсчитать все мои данные the result : 9 , и как подсчитать мой общий объект внутри моего массива? Ожидаемый результат :

 array 0 = 2, array 1 = 3, array 2 = 4
 

Комментарии:

1. вы хотите подсчитать количество элементов в каждой группе?

2. да, сэр, я хочу подсчитать количество моих элементов внутри группы

Ответ №1:

Вы можете использовать array_map (что в данном случае более чем достаточно):

 array_map('count', $fruits)
 

Если вы предпочитаете, вы можете использовать методы сбора, чтобы помочь получить ваш счет из каждой «группы»:

 collect($fruits)->map(fn ($i) => count($i))->all()
 

Или короче:

 collect($fruits)->map('count')->all()
 

Мы создаем коллекцию из массива и используем map метод для перебора каждой «группы» (элемента этого массива) и возвращаем количество «группы». Затем, чтобы получить массив из коллекции, all .

PHP.net Функции ручного массива — array_map

Документы Laravel 8.x — Коллекции — Доступные методы — map

Документы Laravel 8.x — Коллекции — Доступные методы — all

Комментарии:

1. хорошо, сэр, спасибо, что дали ответ на этот вопрос, и вы также предоставили документацию. точный, краткий и ясный ответ

2. @LuckALip np, я также добавил прямую опцию PHP… удачи и получайте удовольствие

3. окей, конечно, отметил для меня, спасибо за все

4. Я согласен с @lagbox, сэр, array_map достаточно, поскольку метод сбора map использует array_map в фоновом режиме