php - 将目录路径转换为javascript对象

标签 php javascript dot-operator

我有一个 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 字符串,其中 x_i、y_i、z_i 等是“/”以外的字符,放入嵌套的 javascript 对象 x1x2x3...xn.y1y2...yn.z1z2z3...zn = {};。我想我找到了一些解决方案 here由于该用户还试图根据分隔字符串(在他的例子中为“_”)动态添加 javascript 对象。

最佳答案

我从哪里开始:不要使用 new Array() 来创建一个新数组,只需使用文字 []。谷歌原因。

数组与对象不同 - 它是 Object 的扩充。所以它不支持这样的点符号。此外,您的 PHP 代码已关闭:引用的 $files['name'] 不明确(PHP 不知道要打印什么:$file 的值,后跟 [' name'] 作为一个简单的字符串,或者 $file['name']。但不仅如此:它不在 php 标签中......

这里有一种方法可以做你想做的事——但你不应该使用它:

var files = {};//create object. properties can be numeric, too
<?php
    foreach ($dirlist as $key => $file)
    {//use $key for numeric index/properties
        echo 'files['.$key.'] = "'.$file['name'].'";';
        //or with double quotes:
        echo "files[$key] = '{$file['name']}';";//need the curly's for ambiguity, or rather avoid ambiguity
    }
?>

如果您希望属性具有前导零,则可以使用 str_padsubstr('000'.$key,-3);

这是我要做的:

var files = JSON.parse('<?= json_encode($dirlist); ?>');

就是这样。

关于php - 将目录路径转换为javascript对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343169/

相关文章:

php - 用户-项目关系的数据库设计

php - 不区分大小写但敏感

javascript - 自定义指令上的 Angular 属性困惑

c++ - .(dot) 运算符在 Objective-C 中究竟做了什么

php - 动态 url 重写 htaccess

php - getimagesize() 不适用于大图像 (640k+)

javascript - Processing.js 不会加载脚本

javascript - 不能使用 javaScript setInterval 方法

objective-c - 点 (".") 运算符和箭头 ("->") 运算符在 C 与 Objective-C 中的使用

德摩根定律实现中的 Haskell 点 (.) 运算符