我有一个关联数组,我需要计算其中布尔值的数量.
最终结果是创建一个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) 我想创建一个从文件中读取值的关联数组.我的代码看起来像这样,但它给我一个错误,说我不能指标必须是整数.
谢谢=]
for line in open(file):
x=prog.match(line)
myarray[x.group(1)]=[x.group(2)]
Run Code Online (Sandbox Code Playgroud) 我在Javascript中有一个关联数组对象,我只需要一部分.使用常规数组,我只使用切片来获取我需要的部分,但显然这不适用于关联数组.是否有任何内置的Javascript函数,我可以使用它只返回此对象的一部分?如果没有,那么这样做的最佳做法是什么?谢谢!
我想知道如何从python字典中对键执行某种索引.这本字典大约有.400,000项,所以我试图避免线性搜索.
基本上,我试图找到是否userinput在任何dict键内.
for keys in dict:
if userinput in keys:
DoSomething()
break
Run Code Online (Sandbox Code Playgroud)
这将是我想要做的一个例子.有没有办法以更直接的方式搜索,没有循环?或者什么是更有效的方式.
澄清:该userinput是不完全的关键是什么,例如userinput可能log的,而关键是logfile
编辑:可以在搜索之前完成的任何列表/缓存创建,预处理或组织都是可接受的.唯一需要快速的是搜索密钥.
将新值推送到索引数组时
$array[] = 'new value';
Run Code Online (Sandbox Code Playgroud)
PHP文档解释了如何在[MAX_INDEX + 1]位置添加它.
将新值推送到关联数组时
$array['key'] = 'new value';
Run Code Online (Sandbox Code Playgroud)
它的工作方式相同,但我没有在文档中看到任何解释来确认它是如何或为什么这样做的.订单似乎在我的实施中是一致的,但我怎么知道订单将保持不变?有谁知道PHP如何在后端实现这一点?
有人可以向我解释一下count函数如何与下面的数组一起工作吗?
我的想法是输出4的以下代码,因为那里有4个元素:
$a = array
(
"1" => "A",
1=> "B",
"C",
2 =>"D"
);
echo count($a);
Run Code Online (Sandbox Code Playgroud) 将新元素添加到关联数组的所有示例都是"简单"的方式并且只有一维数组 - 我的理解问题是在数组中有数组(或者是数组中的对象?).
我有以下数组:
var test = [
{
value: "FirstVal",
label: "My Label 1"
},
{
value: "SecondVal",
label: "My Label 2"
}
];
Run Code Online (Sandbox Code Playgroud)
两个问题:如何从头开始生成这个关联数组(是...对象)?如何将新元素添加到现有数组?
谢谢你帮我理解javascript.
是否有任何php函数,例如in_array,你可以通过mysql函数"mysql_fetch assoc"获得关联数组?
例如,如果我有一个如下所示的$数组:
array(0=>(array(ID=>1, name=>"Smith"), 1=>(array(ID=>2, name=>"John"))
Run Code Online (Sandbox Code Playgroud)
我能做点什么吗 in_array(key,value,array)?
或者在我的情况下,如果我正在寻找ID值为"1" in_array("ID",1,$array),.
这是我的解决方案,如果您认为这是正确的方式,请对其进行评论:
function in_assoc_array($key,$value,$array)
{
if (empty($array))
return false;
else
{
foreach($array as $a)
{
if ($a[$key] == $value)
return true;
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud) 可以构造一个关联数组,其元素包含bash中的数组吗?例如,假设有一个具有以下数组:
a=(a aa)
b=(b bb bbb)
c=(c cc ccc cccc)
Run Code Online (Sandbox Code Playgroud)
可以创建一个关联数组来访问这些变量吗?例如,
declare -A letters
letters[a]=$a
letters[b]=$b
letters[c]=$c
Run Code Online (Sandbox Code Playgroud)
然后通过诸如的命令访问各个元素
letter=${letters[a]}
echo ${letter[1]}
Run Code Online (Sandbox Code Playgroud)
这种用于创建和访问关联数组元素的模拟语法不起作用.是否存在实现相同目标的有效表达式?
php ×4
arrays ×2
bash ×2
count ×2
javascript ×2
python ×2
search ×2
dictionary ×1
if-statement ×1
indexing ×1
nested ×1