Multiplicar resultados de funciones en PHP

3 minutos de lectura

Multiplicar resultados de funciones en PHP
usuario1448371

Todavía soy principiante en PHP. tengo un pequeño problema, quisiera multiplicar el valor get_formatted_order_total(); con 3.75 y lo que hice es

get_formatted_order_total(); * 3.75

pero no funcionó.

aquí está el código

<li class="total">
    <?php _e('Total:', 'woocommerce'); ?>
    <strong><?php echo $order->get_formatted_order_total(); ?></strong>
</li>

Gracias

  • get_formatted_order_total(); * 3.75 – Está seguro ; se necesita?

    – Andrius Naruševičius

    11 de junio de 2012 a las 7:42

  • Gran advertencia: no use PHP flotantes para calcular precios. Ese tipo de variable no ha sido diseñado para cálculos comerciales.

    – hakré

    11 de junio de 2012 a las 14:42


  • Un consejo, diciendo “pero no funcionó”. sin publicar una explicación de por qué, o cualquier mensaje de error / seguimiento de pila relevante no es muy útil.

    – Kev

    11 de junio de 2012 a las 23:59

Los puntos y comas van en el final de una instrucción. Dado que esta es toda una instrucción, debe mover el punto y coma al final de la línea:

echo get_formatted_order_total() * 3.75;

Ejemplo: http://codepad.org/HH3RLZCR

  • ¡Gracias, chicos! ¡esta funcionando! 😀 pero el valor es incorrecto, me da 7.5 y debería ser 37.5 porque el valor para get_formatted_order_total = 10 [ as you know the vaule is changing all the time not allways 10]

    – usuario1448371

    11 de junio de 2012 a las 7:54


  • @ user1448371 No preste demasiada atención al valor devuelto en el ejemplo, es simplemente para demostrar la funcionalidad.

    – Sansón

    11 de junio de 2012 a las 8:26

  • ¡Gracias amigo! tanto, pero la salida es 0, creo que esto se debe a que el símbolo “$” que se incluye en get_formatted_order_total() ¿hay alguna forma de solucionarlo?

    – usuario1448371

    11 de junio de 2012 a las 8:32

  • @ user1448371 Debe eliminar el $ de la salida y solo agréguelo cuando esté mostrando el valor. ¿Es esa una opción? Si no, podemos resolver esto de otra manera.

    – Sansón

    11 de junio de 2012 a las 8:37

  • ¡no Desafortunadamente! ¡No es una opción! tengo que multiplicar 3.75 con “$+numeros”

    – usuario1448371

    11 de junio de 2012 a las 8:39

Multiplicar resultados de funciones en PHP
yAnTar

Inténtalo

echo get_formatted_order_total() * 3.75;

Sin ; después (). ; debería ser después de 3.75

  • Todavía necesita el semi colan después de 3.75

    – Chris James Champeau

    11 de junio de 2012 a las 7:45

  • Podemos usar o no; en la última línea, pero no es una buena práctica.

    – yAnTar

    11 de junio de 2012 a las 7:53

  • Olvidé mencionar que el valor de formatted_order_total se incluye con “$” con número

    – usuario1448371

    11 de junio de 2012 a las 8:05

  • @yAnTar Definitivamente es una buena práctica usar punto y coma en cada línea. ¿Qué sucede si agrega un código adicional al archivo y olvida el punto y coma?

    – Indefinido

    11 de junio de 2012 a las 8:08


El problema es ese get_formatted_order_total() devuelve una cadena, formateada para mostrarse en el sitio web, no un valor numérico que pueda usar para el cálculo.

El valor sin formato está disponible como variable miembro de la clase Order, por lo que

echo $order->order_total * 3.75;

Deberia trabajar.

Para entender esto, mira el código fuente de Woocommerce: Order::get_formatted_order_total() simplemente formatea Order::order_total con una función auxiliar woocommerce_price():

/** Gets order total - formatted for display */
function get_formatted_order_total() {
    $formatted_total = woocommerce_price( $this->order_total );

    return apply_filters( 'woocommerce_get_formatted_order_total', $formatted_total, $this );
}

¿Ha sido útil esta solución?