PHP: implode considerando anche le chiavi

Ogni tanto in PHP c’è il bisogno di unire gli array considerando anche le chiavi, così ho scritto questa funzione.

In realtà è banale ma ogni volta che comincio un progetto sono costretto a riscrivermela, così la scrivo qui.

/**
 * Mette insieme gli elementi di un array in una stringa considerando
 * anche le chiavi.
 *
 * @param string $glueval: stringa per unire chiave e valore
 * @param string $gluekey: stringa per unire le coppie
 * @param array $array: L'array da unire
 * @return string: L'array unito
 *
 * @author: Piero VDFN
 * @license: Public Domain
 */
function implode_keys($glueval, $gluekey, $array) {
	if(count($array)==0) {
		return '';
	}
	$r='';
	foreach($array as $key=>$val) {
		$r.=$key.$glueval.$val.$gluekey;
	}
	$r=substr($r, 0, -strlen($gluekey));
	return $r;
}

Questa funzione è utilissima per unire le variabili GET da mettere in un indirizzo partendo da un array.

Where Clause con Array in PHP

Una delle più belle funzioni dei DB relazionali è senz’altro la “Where Clause”.

Però nei database di testo purtroppo non è presente ☹️

Ecco una funzione che serve per trovare da un array multidimensionale dei suoi valori o delle sue chiavi (ovvero ‘values’ o ‘key’ nel parametro $what) dicendo che valore ($value) si vuole trovare per quale chiave ($key).

È possibile limitare la ricerca a un numero di valori o a tutti i valori specificandola in $num.

La rilascio in pubblico dominio, ovvero potete farne quello che volete!

function whereClause($array, $key, $value, $num=-1, $what='values') {
	if(!is_array($array) || count($array)==0) return false;
	$r=array();
	$i=0;
	foreach($array as $k=>$v) {
		# TODO: Just equal?
		if($v[$key]==$value) {
			$r[]=($what=='keys') ? $k : $v;
			$i++;
			if($i>=$num && $num>0) break;
		}
	}
	return $r;
}