我有一个名为insert的函数,它接受两个参数(name,telnumber).
当我调用这个函数时,我想添加一个关联数组.
例如,当我执行以下操作时:
insert("John", "999");
insert("Adam", "5433");
Run Code Online (Sandbox Code Playgroud)
我想要它,所以这样存储:
[0]
{
name: John, number: 999
}
[1]
{
name: Adam, number: 5433
}
Run Code Online (Sandbox Code Playgroud) 我正在为极其资源受限的嵌入式设备(http://www.espruino.com)编写一个JavaScript解释器,每当我认为我已经正确地实现了一些JavaScript时,我就会意识到我错了.
我现在的问题是[].您如何正确实现JavaScript最基本的部分之一?
我查看了JavaScript规范,也许我找不到正确的位,但我找不到有用的答案.
我之前曾假设您有效地拥有两个"地图" - 一个用于整数,一个用于字符串.并且数组长度是最高整数加1的值.然而,根据Chrome上的jsconsole,这似乎是错误的:
var a = [];
a[5] = 42;
a["5"]; // 42
a.length; // 6
Run Code Online (Sandbox Code Playgroud)
但是也:
var a = [];
a["5"] = 42;
a[5]; // 42
a.length; // 6
Run Code Online (Sandbox Code Playgroud)
所以...很棒 - 一切都被转换成一个字符串,并且使用表示整数的最高值字符串(加一)来获取长度?错误.
var a = [];
a["05"] = 42;
a.length; // 0
Run Code Online (Sandbox Code Playgroud)
"05"是一个有效的整数 - 即使是八进制.那为什么它不会影响长度呢?
您是否必须将字符串转换为整数,然后在转换回字符串时检查它是否匹配?
有没有人引用用于存储和获取数组或对象中的项的确切算法?它看起来应该很简单,但看起来它实际上并非如此!
关联数组的关键是动态生成的.我如何获得这样一个数组的"密钥"?
$arr = array ('dynamic_key' => 'Value');
Run Code Online (Sandbox Code Playgroud)
我知道可以通过这样的foreach循环访问它:
foreach ($arr as $key => $val) echo "Key value is $key";
Run Code Online (Sandbox Code Playgroud)
但是,我知道这个数组只有一个键,并且想避免使用foreach循环.是否可以以任何其他方式访问此元素的值?或者获得关键名称?
我想在PL/SQL中执行SQL查询,并将结果填充到关联数组中,其中SQL中的一列成为关联数组中的键.例如,假设我有一个Person带有列的表
PERSON_ID INTEGER PRIMARY KEY
PERSON_NAME VARCHAR2(50)
Run Code Online (Sandbox Code Playgroud)
...和价值观如下:
PERSON_ID | PERSON_NAME
------------------------
6 | Alice
15 | Bob
1234 | Carol
Run Code Online (Sandbox Code Playgroud)
我想批量收集此表TABLE OF VARCHAR2(50) INDEX BY INTEGER,使得6此关联数组中的键具有值Alice等等.可以在PL/SQL中完成吗?如果是这样,怎么样?
可能重复:
PHP关联数组是否已订购?
如果我用不同的键将项添加到关联数组中,是否保留了加法的顺序?如何访问给定元素的"previous"和"next"元素?
说我有这样的数组:
array(2) {
[0]=> array(2) {
["n"]=> string(4) "john"
["l"]=> string(3) "red"
}
[1]=> array(2) {
["n"]=> string(5) "nicel"
["l"]=> string(4) "blue"
}
}
Run Code Online (Sandbox Code Playgroud)
我如何更改内部数组的键?说,我想为"name"更改"n",为"last_name"更改"l".考虑到它可能发生比阵列没有特定的键.
我有以下表格:
<form action="options.php" method="post">
<input type="text" name="deptid" id="deptid" />
<input type="text" name="deptname" id="deptname" />
<input type="submit" name="submit" id="submit" value="save" />
</form>
Run Code Online (Sandbox Code Playgroud)
编辑
是否可以在提交之前将这两个值传递给一个关联数组?我想以这种形式传递它:
array('deptid'=>'deptname')
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为我避免修改目标php文件的脚本(options.php)
谢谢.
我正在阅读C++标准库:教程和参考书.在地图示例中:
typedef map<string,float> StringFloatMap;
StringFloatMap coll;
//insert some elements into the collection
coll["VAT"] = 0.15;
coll["Pi"] = 3.1415;
coll["an arbitrary number"] = 4983.223;
coll["Null"] = 0;
Run Code Online (Sandbox Code Playgroud)
作者说:
这里,索引用作键,可以是任何类型.这是关联数组的接口.关联数组是索引可以是任意类型的数组.
任何人都可以解释一下,关联数组中任意类型意味着什么?
我有一个关联数组,我需要计算其中布尔值的数量.
最终结果是创建一个if语句,当数组中只存在一个true值时,该语句将返回true.如果数组中有多个真值,或者数组中没有真值,则需要返回false.
我知道最好的路线是以某种形式使用count和in_array.我不确定这会起作用,只是在我的头顶,但即使它确实如此,这是最好的方法吗?
$array(a->true,b->false,c->true)
if (count(in_array(true,$array,true)) == 1)
{
return true
}
else
{
return false
}
Run Code Online (Sandbox Code Playgroud) 如何测试是否在Bash中声明了关联数组?我可以测试一个变量,如:
[ -z $FOO ] && echo nope
Run Code Online (Sandbox Code Playgroud)
但我似乎不适用于关联数组:
$unset FOO
$declare -A FOO
$[ -z $FOO ] && echo nope
nope
$FOO=([1]=foo)
$ [ -z $FOO ] && echo nope
nope
$ echo ${FOO[@]}
foo
Run Code Online (Sandbox Code Playgroud)
编辑:
谢谢你的答案,两者似乎都有效,所以我让速度决定:
$ cat test1.sh
#!/bin/bash
for i in {1..100000}; do
size=${#array[@]}
[ "$size" -lt 1 ] && :
done
$ time bash test1.sh #best of five
real 0m1.377s
user 0m1.357s
sys 0m0.020s
Run Code Online (Sandbox Code Playgroud)
和另外一个:
$ cat test2.sh
#!/bin/bash
for i in {1..100000}; do
declare …Run Code Online (Sandbox Code Playgroud) arrays ×5
php ×5
javascript ×2
bash ×1
c++ ×1
count ×1
dictionary ×1
html ×1
if-statement ×1
oracle ×1
plsql ×1