es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PHP – Cambiar solo el valor con ‘0’ por la cadena ‘Gratis’

Acabo de simplificar los datos JSON que tengo porque solo necesito dos valores de ellos. Filtré lo que necesito como puedes ver en el código a continuación, pero en algunos valores hay un 0 y en la salida solo ese cero debe ser un nuevo valor ‘Gratis’.

Aquí está el código que tengo hasta ahora:

$json = '[{"Number":"333567","Cost":0},{"Number":"333568","Cost":7500},{"Number":"333569","Cost":7500}]';
$options = json_decode($json, true);

$newArray = [];
foreach ($options as $key => $value) {
    $newArray[$value['Number']]= $value['Number']." "."£".$value['Cost'] / 100;
}
echo '<br>';
echo '<br>';

print_r($newArray);

Los resultados que obtuve son:

Array ( [333567] => 333567 £0 [333568] => 333568 £75 [333569] => 333569 £75 )

Pero en la salida necesito solamente que <strong>£0</strong> sea <strong>Gratis</strong> así:

Array ( [333567] => 333567 Gratis [333568] => 333568 £75 [333569] => 333569 £75 )
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para reemplazar el valor de £0 por “Gratis” en la salida, puedes utilizar una declaración condicional dentro del bucle foreach para verificar si el valor de Cost es igual a 0. Si lo es, entonces establece el nuevo valor como “Gratis”, de lo contrario, establece el valor original con el signo de libra.

    Aquí está el código actualizado:

    $json = '[{"Number":"333567","Cost":0},{"Number":"333568","Cost":7500},{"Number":"333569","Cost":7500}]';
    $options = json_decode($json, true);
    
    $newArray = [];
    foreach ($options as $key => $value) {
        $newVal = ($value['Cost'] == 0) ? 'Gratis' : '£' . ($value['Cost'] / 100);
        $newArray[$value['Number']] = $value['Number'] . ' ' . $newVal;
    }
    
    print_r($newArray);
    

    Y la salida será:

    Array ( [333567] => 333567 Gratis [333568] => 333568 £75 [333569] => 333569 £75 )
    

Comments are closed.