Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/Jquery-如何基于变量设置变量名_Javascript_Php_Jquery_Wordpress - Fatal编程技术网

Javascript/Jquery-如何基于变量设置变量名

Javascript/Jquery-如何基于变量设置变量名,javascript,php,jquery,wordpress,Javascript,Php,Jquery,Wordpress,这已经被问了很多次了,但我不明白 在下面 var variableName = "hello"; 如何基于另一个变量生成变量名“variableName” PHP示例 $a = 'hello'; $$a = 'hi'; // same as $hello.. echo $hello; // and $hello outputs 'hi' 我特别需要将此变量用于本地存储,因此可能是语法问题 我使用它的目的是什么(你可能会跳到这似乎很有效) 我想生成一个唯一的变量名,用于将信息存储在本地存储

这已经被问了很多次了,但我不明白

在下面

var variableName = "hello";
如何基于另一个变量生成变量名“variableName”

PHP示例

$a = 'hello';
$$a = 'hi'; // same as $hello..
echo $hello; // and $hello outputs 'hi'
我特别需要将此变量用于本地存储,因此可能是语法问题


我使用它的目的是什么(你可能会跳到这似乎很有效


我想生成一个唯一的变量名,用于将信息存储在本地存储器中。变量名将基于我用php检索的wordpress帖子/页面的帖子id

例如,我们会说post id是3333

var postIdNumber = 'id3333';
我将字母id添加到每个帖子id的开头

所以现在我有了id3333

var postIdNumber = 'id3333';
然后我得到了另外3条关于这篇文章的信息,我想将它们存储到本地存储器中(为了简单起见,我展示了一个示例输出,而不是获取它的代码)

现在我想将这些信息存储到本地存储器中

var lsTest = { 'lsURL': postURL, 'lsTitle': postTitle, 'lsThumb': postThumb };
localStorage.setItem('lsTest', JSON.stringify(lsTest));
那很好。除了我希望能够将多篇文章存储到本地存储中,以便以后从“我最喜欢的文章”页面检索

所以我需要一个动态变量名

  • 对于post ID 3333,我需要将当前命名为lsTest的变量命名为id3333
  • 对于post ID 4444,我需要将当前命名为lsTest的变量命名为id4444
这似乎有效(尽管我不完全理解) 改性溶液

而这不是..

var variableVariable = {} // also, should this have a ';' ?
variableVariable.postNumber = 'id3333';
var vv = 'postNumber';
var variableVariable[vv] = { 'lsURL': postURL, 'lsTitle': postTitle, 'lsThumb': postThumb };
localStorage.setItem('variableVariable[vv]', JSON.stringify(variableVariable[vv]));
在PHP中,我可能会做这样的事情。。(例如,我将php变量混合到JS中)


您只需要创建一个对象对象对象,用唯一的post id进行键控。然后,您需要在存储对象之前对其进行字符串化,并在检索对象时对其进行解析

        function saveObject(key, object) {
            object = JSON.stringify(object);
            window.localStorage.setItem(key, object);
        }
        function getSavedObject(key) {
            var saved = window.localStorage.getItem(key);

            if (saved) {
                return JSON.parse(saved);
            } else {
                return null;
            }
        }
你的目标:

var lsTest = {
    id3333: {
        postUrl: postUrl1,
        postTitle: postTitle1,
        postThumb: postThumb1,
    },
    id4444: {
        postUrl: postUrl2,
        postTitle: postTitle2,
        postThumb: postThumb2,
    }
}
存储它:

saveObject('myUniqueSiteName', lsTest);
检索它:

var lsTest = getSavedObject('myUniqueSiteName');
增加一个新职位:

var lsTest = getSavedObject('myUniqueSiteName');
var postId = 'id555';
lsTest[postId] = {
    postUrl: postUrl3,
    postTitle: postTitle3,
    postThumb: postThumb3,
}
saveObject('myUniqueSiteName', lsTest);

即使在PHP中,变量也不是一个好主意。只需创建一个数组或散列(这是一个对象,但它用作散列或映射,您可以在其中随意添加和删除属性或条目)

可以通过如下方式访问名为“bar”的对象上名为“foo”的属性:

bar.foo = 'baz';
console.log(bar.foo);
或者像这样:

bar['foo'] = 'baz';
console.log(bar['foo']);
这与:

var name = 'foo';
bar[name] = 'baz';
console.log(bar[name]);
最后,JavaScript中的全局对象(在浏览器中是
窗口
)“保存”全局变量

var myGlobal = 10;
console.log(window.myGlobal); // logs 10
var globalName = 'foo';
window[globalName] = 'baz';
console.log(foo); //logs 'baz'

一般不鼓励使用全局变量。使用它们来存储VAR的名称是ID的帖子是非常非正统的,许多JS开发人员会认为它是简单错误的。

谢谢,我能够马上得到这个工作,并且理解PHP变量变量的方式。非常感谢详细的答案。当我将代码应用到本地存储测试脚本中时,我能够修改您的代码,并从中学到了很多东西
bar['foo'] = 'baz';
console.log(bar['foo']);
var name = 'foo';
bar[name] = 'baz';
console.log(bar[name]);
var myGlobal = 10;
console.log(window.myGlobal); // logs 10
var globalName = 'foo';
window[globalName] = 'baz';
console.log(foo); //logs 'baz'