【发布时间】:2012-12-29 20:56:10
【问题描述】:
我有一个 PHP 中的目录路径/文件列表,如下所示:
path1/path2/foo1_jpg
path1/foo2_png
path2/path3/bar_pdf
path2/
path1/
我想将这些转换为 javascript 对象。我想只是将“/”转换为句点,然后说类似的话:
<script>
var files = new Array();
<?php $dirlist = getFileList("images",true); ?> //returns array of directory paths (and other info)
<?php foreach($dirlist as $file): ?>
files.<?=$file['name']?> = "$file['name']";
//where $file['name'] returns, for example, path1.path2.foo1_jpg
<?php endforeach; ?>
console.log(files);
</script>
我唯一的问题是文件名或目录是否以数字开头,即我不能说:files.001.foo = "bar";
我相信我需要重载点运算符来处理以数字开头的名称。这是最好的方法,还是有其他方法?
我实际上是在尝试将 "x1x2...xn/y1y2...yn/..." 形式的 php 字符串解析为嵌套的 javascript 对象 x1x2x3...xn.y1y2...yn.z1z2z3...zn = {};,其中 x_i、y_i、z_i 等是“/”以外的字符。我想我找到了一些解决方案here 因为该用户还尝试基于分隔字符串(在他的情况下为“_”)动态添加 javascript 对象。
【问题讨论】:
-
我不明白:你为什么要转换“/”?
-
是的,为什么要把 "/"s 转换成 "."s?
-
因为
file.dir1/dir2/dir3 = "bar"不是 javascript 中的有效语法。因此将“/”转换为“.”允许我说file.dir1.dir2.dir3 = "bar"。它还允许我轻松分配嵌套对象。这有意义还是我应该改写? -
虽然丑陋,但您可以将它们作为字符串分配和访问。即 file['dir1/dir2/dir3'] 有效。
标签: php javascript dot-operator