code: static function f_Misc_UpdateArray(&$array, $numerical, $v, $d) {
  	if (!is_array($v)) {
  		if (is_null($v)) {
  			$array = array();
  			return;
  		} else {
  			$v = array($v=>$d);
  		}
  	}
  	foreach ($v as $p=>$a) {
  		if ($numerical===true) { // numerical keys
  			if (is_string($p)) {
  				// syntax: item => true/false
  				$i = array_search($p, $array, true);
  				if ($i===false) {
  					if (!is_null($a)) $array[] = $p;
  				} else {
  					if (is_null($a)) array_splice($array, $i, 1);
  				}
  			} else {
  				// syntax: i => item
  				$i = array_search($a, $array, true);
  				if ($i==false) $array[] = $a;
  			}
  		} else { // string keys
  			if (is_null($a)) {
  				unset($array[$p]);
  			} elseif ($numerical==='frm') {
  				self::f_Misc_FormatSave($a, $p);
  			} else {
  				$array[$p] = $a;
  			}
  		}
  	}
  }
docs: Simply update an array