Целочисленное преобразование объекта массива PHP с помощью array_map или array_walk

Я пытаюсь написать крошечную функцию для преобразования значений status и total в целое число в моем многомерном массиве, я думаю, мне нужно использовать array_map или array_walk? :

array (
  0 => 
  array (
    'status' => '0',
    'total' => '6',
  ),
  1 => 
  array (
    'status' => '1',
    'total' => '37',
  ),
  2 => 
  array (
    'status' => '2',
    'total' => '8',
  ),
)

чтобы получить этот результат

array (
  0 => 
  array (
    'status' => 0,
    'total' => 6,
  ),
  1 => 
  array (
    'status' => 1,
    'total' => 37,
  ),
  2 => 
  array (
    'status' => 2,
    'total' => 8,
  ),
)

Вы хорошо догадываетесь.

Alexander van Oostenrijk 18.12.2020 15:32

В следующий раз включите свою попытку или отредактируйте и добавьте свою попытку, даже если это катастрофа. В противном случае вы, скорее всего, получите отрицательный отзыв.

Progrock 18.12.2020 16:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
430
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поместите значения каждого подмассива через intval:

<?php
$data =
[
    [
        'status' => '1',
        'total'  => '2',
    ],
    [
        'status' => '3',
        'total'  => '4'
    ],
];

$result = array_map(fn($v)=>array_map('intval', $v), $data);

var_dump($result);

Выход:

array(2) {
  [0]=>
  array(2) {
    ["status"]=>
    int(1)
    ["total"]=>
    int(2)
  }
  [1]=>
  array(2) {
    ["status"]=>
    int(3)
    ["total"]=>
    int(4)
  }
}

Или просто трансформируйте листья на месте:

array_walk_recursive($data, function(&$v) { $v = (int) $v; });

И простой foreach с жонглированием типа:

foreach($data as &$v) {
    $v['status']+=0;
    $v['total'] +=0;
}
unset($v);

Спасибо за то, что оба подхода очень приятные, я многому научился с этим

Loic H 18.12.2020 15:48

Foreach не намного длиннее (однострочный): foreach($data as&$a)foreach($a as&$v)$v=(int)$v;unset($v,$a); Если вас не волнуют оборванные ссылки, их можно еще уменьшить.

Progrock 18.12.2020 15:49

Играл в гольф: foreach($data as&$a)foreach($a as&$v)$v+=0;

Progrock 18.12.2020 15:56

интересно, не является ли базовый foreach() (намного) быстрее...

berend 18.12.2020 16:00

Аргумент в пользу foreach заключается в том, что он явный и, вероятно, его меньше нужно изучать/запоминать. Эта версия соответствует Php 4.3–8: 3v4l.org/0tQCv

Progrock 18.12.2020 16:24

Другие вопросы по теме