我的数组是:
{
"data":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQ…ACCCCAAAIIIICAvwIEIP760zoCCCCAAAIIIIAAAoES+P992sgQ2E6rdwAAAABJRU5ErkJggg==",
"name":"splash.png",
"imageOriginalWidth":1024,
"imageOriginalHeight":768,
"imageWidth":1969,
"imageHeight":1477,
"width":800,
"height":600,
"left":-585,
"top":-406
}
我有两个变量:
$image_data = $array['data'];
$image_name = $array['name'];
这两个变量都返回undefined
我错过了一些明显的东西吗?
答案 0 :(得分:1)
首先,重要的是要注意这不是一个数组,它是一个对象定义。
数组可以定义为:
[
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQ…ACCCCAAAIIIICAvwIEIP760zoCCCCAAAIIIIAAAoES+P992sgQ2E6rdwAAAABJRU5ErkJggg==",
"splash.png",
1024,
768,
1969,
1477,
800,
600,
-585,
-406
]
哪些不是密钥,例如"data":
(也可以表示为data:
)看来你肯定想要按密钥访问值,所以你真正想要的是:
var data, name, myObject;
// NOTE: We do not "quote" object keys under normal circumstances.
myObject = {
data:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQ…ACCCCAAAIIIICAvwIEIP760zoCCCCAAAIIIIAAAoES+P992sgQ2E6rdwAAAABJRU5ErkJggg==",
name:"splash.png",
imageOriginalWidth:1024,
imageOriginalHeight:768,
imageWidth:1969,
imageHeight:1477,
width:800,
height:600,
left:-585,
top:-406
}
data = myObject["data"]; // We don't usuaully use this
name = myObject["name"]; // style, although it works.
//
// It's generally reserved for
// dynamic access.
//
// i.e. we make a string to match the keyname.
但是,为了更正,您应该使用点语法来访问对象密钥。
data = myObject.data;
name = myObject.name;
我希望这能为你解决一些问题。
在旁注中请勿使用$array
之类的名称。首先不要将$
前缀用于普通变量,这不是PHP或BASIC。
其次,当你有一个对象时,你希望它被命名为有用/有意义/难忘的东西。 (命名事情很难!)
当你正确地命名时,其他人可以阅读和理解你的代码,在镇上度过了一个沉重的周末之后,你也可以。
答案 1 :(得分:-3)
您是否尝试使用var关键字声明数组以及您想要存储数据中的内容的变量?
E.g:
var myArray = ["hello",["world"];
通过查看代码,我的印象是您正在尝试制作自定义对象。