我發現parse_str在解碼含有' ', '.'等字元時,會發生問題,所以我打算寫個函數取代它。
而這個陣列用的賦值函數算是副產品,會被使用在一些特殊的情況中。


function &陣列:參照(&$陣列, &$索引表 = array()){
    $參照 = &$陣列;
    foreach ($索引表 as $索引) {
        if (false == is_array($參照) && false == is_null($參照)) {
            $輸出 = false;
            return $輸出;
        } else if (empty($索引)) {
            $參照 = &$參照[];
        } else {
            $參照 = &$參照[$索引];
        }
    }
    return $參照;
}

function &陣列:賦值(&$陣列, &$索引表 = array(), &$值 = '', $拷貝 = true) {
    $參照 = &陣列:參照($陣列, $索引表);
    if (false === $參照) {
        return $陣列;
    } else if (false == $拷貝) {
        $參照 = &$值;
    } else if(is_object($值)) {
        $參照 = clone $值;
    } else {
        $參照 = $值;
    }
    return $陣列;
}


底下是個簡單的範例,執行看看就知道這個函數在幹麼。

$陣列 = array('a'=>array(1,2));
$參照 = array('a', '', 'c');
$值 = 'd';
陣列:賦值($陣列, $參照, $值);
$參照 = array('a', '');
$值 = 'z';
陣列:賦值($陣列, $參照, $值);
echo '<pre>';
print_r($陣列);
echo '</pre>';

創作者介紹

失落的技術

HACGIS 發表在 痞客邦 PIXNET 留言(0) 人氣()