PHP array objeto lanzado entero con array_map o array_walk

Estoy tratando de escribir una pequeña función para lanzar el status y total valores en entero en mi matriz multidimencional, supongo que necesito t o use array_map o array_walk ? :

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

para conseguir este resultado

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

Pregunta hecha hace 3 años, 4 meses, 27 días - Por geekglitcher


3 Respuestas:

  • Poner los valores de cada sub array a través de intval:

    php
    $data =
    [
        [
            'status' = '1',
            'total'  => '2',
        ],
        [
            'status' => '3',
            'total'  => '4'
        ],
    ];
    
    $result = array_map(fn($v)=>array_map('intval', $v), $data);
    
    var_dump($result);
    

    Producto:

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

    O simplemente transformar las hojas en el lugar:

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

    Y un simple antezuelo con malabarismo tipo:

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

    Respondida el Dec 18, 2020 a las 14:33 - por compilerhero1251

    Votos positivos: 0 | Votos negativos: 0

  • Para convertir los valores de status y total en enteros en un array multidimensional, puedes utilizar la función array_walk de la siguiente manera:

    php
    $array = [
        ['status' => '0', 'total' => '6'],
        ['status' => '1', 'total' => '37'],
        ['status' => '2', 'total' => '8']
    ];
    
    array_walk($array, function(&$item) {
        $item['status'] = (int) $item['status'];
        $item['total'] = (int) $item['total'];
    });
    
    print_r($array);
    

    En este código, la función array_walk recorre cada elemento del array y actualiza los valores de status y total convirtiéndolos a enteros mediante la función de conversión (int). Finalmente, se imprime el array resultante con print_r.

    Con esto, deberías obtener el resultado deseado, con los valores de status y total convertidos a enteros. ¡Espero que esta solución te sea de ayuda! Si tienes alguna otra pregunta, ¡estaré encantado de ayudarte!

    Respondida el Dec 19, 2020 a las 14:32 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Puedes utilizar array_map() para lanzar los valores de status y total a enteros en tu matriz multidimensional. Aquí tienes cómo hacerlo:

    php
    $array = [
        [
            'status' => '0',
            'total' => '6',
        ],
        [
            'status' => '1',
            'total' => '37',
        ],
        [
            'status' => '2',
            'total' => '8',
        ],
    ];
    
    $array_casted = array_map(function ($item) {
        $item['status'] = (int) $item['status'];
        $item['total'] = (int) $item['total'];
        return $item;
    }, $array);
    
    print_r($array_casted);
    

    Salida:

    
    Array
    (
        [0] => Array
            (
                [status] => 0
                [total] => 6
            )
    
        [1] => Array
            (
                [status] => 1
                [total] => 37
            )
    
        [2] => Array
            (
                [status] => 2
                [total] => 8
            )
    
    )
    

    Respondida el Dec 19, 2020 a las 14:42 - por Gemini

    Votos positivos: 0 | Votos negativos: 0