簡體   English   中英

PHP維度數組到無JSON的Javascript數組

[英]PHP dimensional array to Javascript array WITHOUT JSON

由於服務器版本的原因,我正在嘗試不使用json編碼器將PHP多維數組轉換為javascript數組。

多維數組的示例:

Array (
    [0] => Array (
            [0] => 18
            [1] => Région Grand EST
            [2] => GE )
    [1] => Array (
            [0] => 17
            [1] => Région Grand OUEST / NORD
            [2] => GO N )
    [2] => Array (
            [0] => 25
            [1] => Région Grand OUEST / SUD
            [2] => GO S )
)

目前沒有多維數組我正在使用此功能:

function js_str($s) {
    return '"'  . addcslashes($s, "\0..\37\"\\") . '"';
}

function js_array($array) {
    if (is_array($array)) {
        $temp = array_map('js_str', $array);
        return '[' . implode(',', $temp) . ']';
    }
    return '[-1]';
}

但是我不能將其用於多維,我試圖遞歸地做類似的事情來處理任何大小的數組。

得到類似的結果:

myArray = [[18, 'Région Grand EST', 'GE'],[17, 'Grand OUEST / NORD', 'GO N'], [25, 'Région Grand OUEST / SUD', 'GO S']];

沒有json_encode真的很難找到答案,謝謝您的幫助。 (是的,我正在史前服務器上開發)

我將使用如下遞歸函數來解決此問題:

function js_array($array) {
    if (is_array($array)) {
        $temp = array();
        $output = '[';
        foreach ($array AS $key=>$value) {
            $temp[] .= "'$key':" . js_array($value);
        }
        $output .= implode(',', $temp);
        $output .= "]";
    } else {
        $output .= "'$array'";
    }
    return $output;
}

我們在這里所做的是評估數組的每個元素,以查看它是否也是數組。 每個級別都會深入自身,直到我們剩下簡單的key:value對。

您可以根據需要編輯特殊字符或刪除陣列鍵。

感謝Danielml01的幫助。 這里使用的解決方案:

function js_array($array) {
    if (is_array($array)) {
        $temp = array();
        $isObject = false;
        foreach ($array AS $key=>$value) {
            if (is_numeric($key))
                $temp[] .= js_array($value);
            else { 
                $isObject = true;
                $temp[] .= "'$key':" . js_array($value)."";
            }
        }
        if ($isObject)
            $output = "{".implode(',', $temp)."}";
        else
            $output = "[".implode(',', $temp)."]";
    }
    else
        $output = "'".$array."'";
    return $output;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM