php (4)


Sumar valores de un multigimensional Array

En ocasiones nos encontramos con un array como el siguiente

[0] => Array
    (
        [id] => 95659865986
        [name] => test
        [cantidad] => 20.00
    )
[1] => Array
    (
        [id] => 95659865987
        [name] => test2
        [cantidad] => 28.00
    )

y queremos suma ‘cantidad’ de todo el array. Podriamos recorrer el array y guardarnos el valor en una variable

$sum = 0;

foreach($array as $num => $values) {
    $sum += $values[ 'cantidad' ];
}

o también podemos usar un array_sum

$sum = array_sum(array_column($array, 'cantidad'));

array_column esta disponible desde PHP 5.5, pero si teneis una versión antigua de PHP podeis usar array_column por ramsey




ternary operator

A menudo nos encontramos que tenemos que usar un if else en alguna situación que sería un poco incómodo tener que trabajar con if(){} else {} por ejempo si queremos ocultar o mostrar alguna parte de codigo html.

<button <? if($val == 1){ ?> class=”active”<? } ?> > button </button>

es por esto que podemos usar formas simplificadas de los if

<button <?=($val == 1 ? ‘class=”active”’ : ‘’ )?> button </button>

también podemos tener el caso de que queremos mostrar una tabla, que completamos con un for, while, … o cualquier otro bucle, y queremos mostrar los valores. Podemos tener casos de que todas las columnas a completar alguna quede vacía (porque no tiene valor) y decidamos que no queremos columnas vacías, y las queramos rellenar con un 0. Para esto lo común es un number_format, un if, sumarle 0 (chapuza), etc… pero cómo quiero que quede un código entendible y no que una etiqueta html tenga una parrafada de php tengo una solución muy sencilla

$val ?: 0

Este código muestra $val y cuando $val no existe muestra un 0, estamos sustitullendo el siguiente codigo

if($val){ echo $val; } else { $echo 0; }

Tambien podriamos combinar varias operaciones

$valid = true;

$lang = 'french';

$x = $valid ? ($lang === 'french' ? 'oui' : 'yes') : ($lang === 'french' ? 'non' : 'no');

echo $x; // outputs 'oui'



Get URL Content por CURL

/* gets the data from a URL */

function get_data($url) {
	$ch = curl_init();
	$timeout = 5;
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
	$data = curl_exec($ch);
	curl_close($ch);
	return $data;
}
$returned_content = get_data('https://vasili.es');



¿ Cual es el limite ?

La flexibilidad de la programación, al menos gran parte de lenguajes, es como una goma elástica, se puede estirar y estirar, pero si te pasas se rompe. El limite lo ha de poner el programado.