【问题标题】:bash awk - need associative array output from a php scriptbash awk - 需要来自 php 脚本的关联数组输出
【发布时间】:2015-07-14 17:37:00
【问题描述】:

我有一个 php 脚本,负责从数据库中返回名称和关联的 ID:

//general array structure is:
$array = array(
    "name1" => 001,
    "name2" => 002,
    ...
);
return $array;

我还有一些 awk 代码需要访问该数组,并将其转换为地图。可以修改 php 脚本以适应这种情况。这是 awk 脚本:

//awk:
system("/usr/bin/php /path/to/script/query_db.php")

//query_db.php:
echo implode(' ', $results);

鉴于上述情况,我不知道该怎么做是在 awk 中创建一个数组。这只会回显从 php 脚本的数组返回的值,并省略键。

【问题讨论】:

  • 最好的方法是尝试一些东西。
  • awk 脚本需要什么格式的?
  • 如上所述,awk 脚本需要将关联数组作为映射来访问。 @dipenshah - 如果你愿意,我可以发布我尝试过的所有内容,但这有什么帮助?
  • 我们需要一个有效的例子来看看你有多远。考虑阅读stackoverflow.com/help/mcve
  • PHP 中没有 "map" 类型,所以它必须是另一种格式,可能是 awk 然后转换为 "map" 的字符串。

标签: php arrays linux bash awk


【解决方案1】:

保持简单。从 PHP 使用这个循环来转储数组:

<?php
foreach ($array as $k=>$v) echo "$k=$v\n";
?>

输出:

name1=1
name2=2

现在在 awk 中使用 = 作为字段分隔符并填充关联数组:

php -s arr.php | awk -F= '{arr[$1]=$2} END{for (i in arr) print i, a[i]}'

【讨论】:

  • 感谢您的回复。最后,我最终做了与您发布的内容类似的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 2015-05-31
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
相关资源
最近更新 更多