目前,我正在努力寻找以下任一问题的解决方案:
- 如何将普通数组(索引从 0 开始的索引数组)转换为关联数组,其中值成为键,值本身就是值。
- 从索引数组创建一个新的 assoc 数组,其中值是键。这在一个声明中。我知道它可以使用循环很好地完成,但对于包含近 500,000 个元素的巨大数组,循环是开销。
-
从 mysql sql 查询的结果创建一个 assoc 数组。我通常从 mysql sql 查询结果创建一个索引数组,如下所示:
mapfile -t a_dummy <<< "$(mysql -u root –disable-column-names –silent -B -e "select * from dummy_tbl;" "$DB_NAME")
"
其中 $DB_NAME 是指向数据库名称字符串的变量。
这是一种方法,使用 sed
.请注意,这仅在原始数组的任何元素都不包含空格时才有效。
declare -A "newArray=( $(echo ${oldArray[@]} | sed 's/[^ ]*/[&]=&/g') )"
sed
命令采用每个数组元素 'x' 并将其替换为字符串 '[x]=x',适用于关联数组赋值。