簡體   English   中英

json_encode從php數組返回null

[英]json_encode returning null from php array

我有一個來自recursiveiteratoriterator的PHP數組,它在我轉儲文件時加載正常。 當我嘗試json_encode並將其傳遞給瀏覽器時,我得到2個場景:

我回應json_編碼並獲得以下內容:

["\/var\/www\/html\/dev\/workspace\/ftpscript\/test\/10MB.zip",
"\/var\/www\/html\/dev\/workspace\/ftpscript\/test\/test.php"]null

如果我從一個遠程PHP腳本(使用2個服務器,源(腳本所在的位置)和獲取信息並處理它的那個)從遠程服務器和json_decode調用它,它回顯產生:

NULL

劇本:

$files = array();
    $startpath = getcwd()."/test/";
    $fileinfos = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($startpath)
    );
    foreach($fileinfos as $pathname => $fileinfo) {
        if (!$fileinfo->isFile()) continue;{
        $files[] .= $pathname;
        }
    }
    $utfEncoded = array_map("utf8_encode", $files );
    echo json_encode($utfEncoded);

我嘗試過編碼和不編碼它會產生相同的結果。 我錯過了什么嗎? 如果它有所作為我在apache上運行php 5.4.38。

編輯:

我已經改變了一點迭代器,但仍然有相同的結果...我現在有:

function ft_srcscan() {
    $path = getcwd();
    $directory = new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS);
    $iterator = new RecursiveIteratorIterator($directory);
    $files = array();
    foreach ($iterator as $info) {
        $files[$info->getPathname()] = $info->getSize();
    }
    echo json_encode($files);
}

當我把完全相同的迭代器在測試頁面本身與編碼一起,我得到的結果在這里

但是當我在我的類中使用該方法調用它時(並且它是唯一運行的)就在這里 最終,我試圖獲取文件列表和文件大小作為數組,文件是關鍵,大小是值。

(更多評論說答案,但我需要更多空間)。

表達中的括號,Sverri提到什么都不做,只是令人困惑。 把它們留下來吧。

另外$files[] .= $pathname; 看起來很奇怪。 $files[] = ...附加到數組,而.=附加到字符串。 同時做兩件事都沒有意義。 PHP似乎忽略了.= 把它拿出來。

所以

if (!$fileinfo->isFile()) continue;{
$files[] .= $pathname;
}

if (!$fileinfo->isFile()) continue;
$files[] = $pathname;

這最有可能對您的問題沒有幫助。 數組是否包含正確的數據?

暫無
暫無

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

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