标签: associative-array

bash 关联数组的基本错误值非常大

我有一个名为 a.txt 的文件,如下所示

7A1123123asd 14
8aasdasdasd 15
Run Code Online (Sandbox Code Playgroud)

现在我编写了一些 bash 代码来读取该文件并根据其中的值构建一个关联数组

#!/bin/bash
declare -a counter
while read DEAL count; do
    counter["$DEAL"]=$count
done < oasload.job

for i in "${!array[@]}"
do
    echo "key : $i"
    echo "value : ${array[$i]}"
done
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我运行时出现以下错误

test.sh: line 6: 7A1123123asd: value too great for base (error token is "7A1123123asd")
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏。

bash associative-array

5
推荐指数
1
解决办法
4496
查看次数

使用关联数组的 D3 日历视图

我想创建一个日历视图,如下例所示:http ://bl.ocks.org/4063318 :

在此输入图像描述

其实我正在尝试修改它。

我有一个像这样的关联数组:#AdminCourt[["2012-10-02", 2], ["2012-10-09", 2], ["2012-10-16", 1]] #ConstituentAssembly[["2012-10-02", 2], ["2012-10-09", 2], ["2012-10-12", 2], ["2012-10-16", 2]]

我尝试像这样填写日历:

BigWordsDates2.map(function(d) {
              return {
                 date: d[0],
                 close: d[1]
              };
              var data = d3.nest()
    .key(function(d) { return d.Date; })
    .rollup(function(d) { return (d.Close - 0); });

  rect.filter(function(d) { return d in data; })
      .attr("class", function(d) { return "day " + color(data[d]); })
    .select("title")
      .text(function(d) { return d + ": " + percent(data[d]); });
      });
Run Code Online (Sandbox Code Playgroud)

我知道我没有循环遍历数组,我不知道我如何尝试每个数组,但似乎我没有正确理解它。

以下是我需要你帮助的事情:)

  1. 循环遍历数组。(我知道如何循环它,但我不知道是否有办法通过 D3 类)
  2. 如何使每个单元格可点击。 …

javascript calendar associative-array d3.js

5
推荐指数
1
解决办法
5123
查看次数

在 bash 中干净转储关联数组内容的简单方法?

我可以使用zsh单个命令轻松转储关联数组的内容:

zsh% typeset -A foo
zsh% foo=(a 1 b 2)
zsh% typeset foo
foo=(a 1 b 2 )
Run Code Online (Sandbox Code Playgroud)

然而,尽管搜索高低,我能找到的最好的是declare -p,其输出包含declare -A

bash$ typeset -A foo
bash$ foo=([a]=1 [b]=2)
bash$ declare -p foo
declare -A foo='([a]="1" [b]="2" )'
Run Code Online (Sandbox Code Playgroud)

是否有一种干净的方法来获取类似输出zsh(理想情况下foo=(a 1 b 2 )foo='([a]="1" [b]="2" )')之类的内容,最好不诉诸字符串操作?

bash associative-array zsh

5
推荐指数
1
解决办法
1052
查看次数

PHP 数组:整数索引与字符串索引

PHP 数组的整数索引字符串索引有什么区别(当然后者被称为associative array)?

例如,以下两个数组有什么区别:

$intIndex[5] = "Hello";
$intIndex[6] = "World";
$intIndex[7] = "!";
Run Code Online (Sandbox Code Playgroud)

$strIndex['5'] = "Hello";
$strIndex['6'] = "World";
$strIndex['7'] = "!";
Run Code Online (Sandbox Code Playgroud)

在第一种情况下, 会发生$intIndex[0]什么$intIndex[4]

php memory arrays integer associative-array

5
推荐指数
1
解决办法
2835
查看次数

复杂的合并技术:如何使用配置数组转置特定的数据集?

我一整天都在努力merge function为多维数组创建一个。这个场景有点不同,很难用语言来描述。相反,我将尝试用一个实际的例子来解释它。

$actual_array = [
     'assets' => [1, 2, 3],
     'liabilities' => [1, 2, 3, 4, 5, 6],
     'equity' => [1],
     'income' => [1, 2, 3, 4],
     'expenses' => [1, 2, 3]
];

$merge = [
    'balance_sheet' => ['assets', 'liabilities', 'equity'],
    'income' => ['income', 'expenses'],
];

self::merge( $merge, $actual_array );
Run Code Online (Sandbox Code Playgroud)

该函数将合并指定的列,然后转置和填充结果。

public static function merge( array $merges, array $data )
{
    $bigger_array_length = 0;
    $arr = [];
    $columns = [];

    foreach ($merges as $key => $merge) {
        
        foreach …
Run Code Online (Sandbox Code Playgroud)

php arrays transpose associative-array multidimensional-array

5
推荐指数
1
解决办法
167
查看次数

当键包含引号时取消设置关联 bash 数组中的值

我有一个 bash 脚本,它使用文件名作为关联数组中的键。一些文件名中有引号,我似乎找不到任何方法来取消它们。

这是从终端复制问题的示例:

$ declare -A x
$ y="key with spaces"
$ z="key with spaces and ' quote"
$ x[$y]=5   # this works fine
$ x[$z]=44  # as does this
$ echo "${x[$y]}" "${x[$z]}" # no problems here
5 44
$ unset x["$y"] # works
$ unset x["$z"] # does not work
bash: unset: `x[key with spaces and ' quote]': not a valid identifier
$ echo "${x[$y]}" "${x[$z]}" # second key was not deleted
 44
Run Code Online (Sandbox Code Playgroud)

在我的脚本中处理的文件名是任意的,无论它们包含什么字符都需要工作(在合理范围内,至少需要使用可打印的字符。) unset 用于清除具有某些属性的文件上的标志。

当它们可能包含引号时,如何让 …

arrays bash associative-array escaping

5
推荐指数
1
解决办法
902
查看次数

使用 Bash,是否可以将数组存储在字典中

使用 bash,可以将数组存储在字典中吗?我已经展示了一些从字典中获取数组的示例代码,但它似乎失去了它是一个数组的事实。

我希望这是dict+=(["pos"]="${array[@]}")命令,但不确定如何执行此操作或什至可能。

# Normal array behaviour (just an example)
array=(1 2 3)
for a in "${array[@]}"
do
    echo "$a"
done
# Outputs:
# 1
# 2
# 3

# Array in a dictionary
declare -A dict
dict+=(["pos"]="${array[@]}")

# When I fetch the array, it is not an array anymore
posarray=("${dict[pos]}")
for a in "${posarray[@]}"
do
    echo "$a"
done
# Outputs:
# 1 2 3
# but I want
# 1
# 2
# 3
Run Code Online (Sandbox Code Playgroud)

arrays bash associative-array

5
推荐指数
1
解决办法
1628
查看次数

PHP/json_encode:处理具有数字属性的混合数组和对象

我最近不得不解决遗留 PHP 应用程序中的错误。此应用程序接收来自另一个应用程序的请求,其 JSON 格式为:

{
  "someList": [
    "item A",
    "item B"
  ],
  "ratings": {
    "0": 0.001234,
    "1": 0.0666,
    "2": 0.09876,
    "3": 0.777777
  }
}
Run Code Online (Sandbox Code Playgroud)

当它反序列化为原生 PHP “关联数组”时,列表和映射(键为 0、1、2 和 3)看起来都像列表。没关系,我可以解决这个问题。但是,此应用程序会对此数据进行计算,并在以大致相同的格式将其序列化回 JSON 并将其发送到另一个应用程序之前对其进行更多计算。这就是问题所在。json_encode($data)上述结果的开箱即用:

{
  "someList": [
    "item A",
    "item B"
  ],
  "ratings": [
    0.001234,
    0.0666,
    0.09876,
    0.777777
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的钥匙都没了...

我看到我可以使用JSON_FORCE_OBJECTlaecho json_encode($data, JSON_FORCE_OBJECT)但后来我得到:

{
  "someList": {
    "0": "item A",
    "1": "item B"
  },
  "ratings": {
    "0": 0.001234,
    "1": 0.0666,
    "2": 0.09876,
    "3": 0.777777
  } …
Run Code Online (Sandbox Code Playgroud)

php json associative-array

5
推荐指数
1
解决办法
913
查看次数

Bash:检查关联数组中是否存在键

目标:

我想做的就是检查关联数组USER_PARAMETERS_KEYs[j]中是否存在a RPM_PARAMETERS_HASH 。我有一个数组和一个关联数组,如下所示:

预定义:

declare -a USER_PARAMETERS_KEYS='([0]="userField" [1]="fUserField" [2]="srcIPField" [3]="srcPortField" [4]="dstIPField" [5]="dstPortField" [6]="dateField" [7]="timeField")'

declare -A RPM_PARAMETERS_HASH='([timeField]="Time" [userField]="User-Name" [dstIPField]="" [srcIPField]="Source-IP-Address" [dstPortField]="Target-UDP-Port" [fUserField]="Full-Name" [dateField]="Date" [srcPortField]="Source-UDP-Port" )'
Run Code Online (Sandbox Code Playgroud)

我实施了以下措施:

if [[  ${RPM_PARAMETERS_HASH[${USER_PARAMETERS_KEYS[j]}]} ]] ; then
Run Code Online (Sandbox Code Playgroud)

问题

我的问题是当${USER_PARAMETERS_KEYS[j]}变得等于时dstIPField,因为它在关联数组中有一个空字符串值,所以尽管键在那里,但不满足 if 条件。

arrays bash associative-array

5
推荐指数
1
解决办法
4796
查看次数

为什么 Bash 关联数组不保持索引顺序?

我正在创建关联数组以在 for 循环中进行处理,但我在索引顺序中得到了一些奇怪的结果。请看一下这个示例脚本:

#!/bin/bash
declare -A test1=(
    [d]=1w45
    [e]=2dfg
    [m]=3df
    [o]=4df
)

declare -A test2=(
    [d1]=1w45
    [e2]=2dfg
    [m3]=3df
    [o4]=4df
)

declare -A test3=(
    [1d]=1w45
    [2e]=2dfg
    [3m]=3df
    [4o]=4df
)

echo ${!test1[@]}
echo ${!test2[@]}
echo ${!test3[@]}
Run Code Online (Sandbox Code Playgroud)

输出将是

$ ./test 
d e m o
o4 m3 e2 d1
3m 4o 1d 2e
Run Code Online (Sandbox Code Playgroud)

为什么项目的顺序会改变?以及如何绕过这种行为?提前致谢!

arrays bash associative-array

5
推荐指数
1
解决办法
1499
查看次数