/** * 配列を再帰的に上書きする */ public function testAmr() { $a = array('a1', 'a2', 'a3'); $b = array('b1', 'b2'); // 1次元配列 $this->assertEquals(array('b1', 'b2', 'a3'), amr($a, $b)); // 2次元配列 $b = array(array('b1')); $this->assertEquals(array(array('b1'), 'a2', 'a3'), amr($a, $b)); // 3次元配列 $a = array(array('a1'), 'a2', 'a3'); $b = array(array(array('b1'))); $this->assertEquals(array(array(array('b1')), 'a2', 'a3'), amr($a, $b)); }
/** * 配列を再帰的に上書きする * 二つまで * @param array $a * @param array $b * @return array */ function amr($a, $b) { foreach ($b as $k => $v) { if (is_array($v)) { if (isset($a[$k])) { $a[$k] = amr($a[$k], $v); continue; } } if (!is_array($a)) { $a = array($a); } $a[$k] = $v; } return $a; }
function Params2b64($params) { amr('utf8_encode', $params); #if utf8 file, or utf8 string, don't have to encode i $params = json_encode($params); return base64_encode($params); }