小编dan*_*gie的帖子

根据子对象数组中的值进行选择

我正在尝试自动化更新 AWS Lambda 层和使用它们的函数的过程。为了获取使用特定层的函数列表,我在我的账户中列出当前函数时解析 AWS CLI 的 JSON 输出。调用aws lambda list-functions返回一个类似于下例的 JSON 块(我特意去掉了一些不相关的内容来关注这个问题):

{
  "Functions": [
    {
      "TracingConfig": {
        "Mode": "PassThrough"
      },
      "FunctionArn": "arn:aws:lambda:eu-west-2:000000000000:function:function-1"
    },
    {
      "Layers": [
        {
          "CodeSize": 11359101,
          "Arn": "arn:aws:lambda:eu-west-2:000000000000:layer:layer1:12"
        }
      ],
      "TracingConfig": {
        "Mode": "PassThrough"
      },
      "FunctionArn": "arn:aws:lambda:eu-west-2:000000000000:function:function-2"
    },
    {
      "Layers": [
        {
          "CodeSize": 11359101,
          "Arn": "arn:aws:lambda:eu-west-2:000000000000:layer:layer1:12"
        },
        {
          "CodeSize": 11359101,
          "Arn": "arn:aws:lambda:eu-west-2:000000000000:layer:layer2:5"
        }
      ],
      "TracingConfig": {
        "Mode": "PassThrough"
      },
      "FunctionArn": "arn:aws:lambda:eu-west-2:000000000000:function:function-3"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我定义了三个函数,其中两个至少使用了一层。我需要做的是获取FunctionArn使用特定层的函数的值列表。到目前为止,我已经能够使用以下命令过滤掉不使用任何图层的函数:

aws lambda list-functions | jq '.Functions[] …
Run Code Online (Sandbox Code Playgroud)

select json jq

3
推荐指数
1
解决办法
263
查看次数

奇怪的IF声明行为

我有一个IF语句,它包含两个单独的函数调用,将值传递给两个变量.显然,如果两个值都不是'FALSE',则执行代码块:

<?php
   class MyValidater {
      static function validateString($string) {
         if (preg_match("/[A-Za-z]+/", $string)) {
            return $string;
         } else {
            return false;
         }
      }
   }

   $firstName = "Daniel";
   $surname = "Simmons";

   // Dodgy IF statement
   if ($first = MyValidater::validateString($firstName) && $second = MyValidater::validateString($surname)) {
      print("Success: $first $second");
   } else {
      print("Fail: $first $second");
   }
?>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,$ first和$ second变量应该包含在静态方法validateString成功验证后的$ firstName和$ surname中保存的值.

但是,两个变量的值最终结束:$ first ='1'和$ second ="Simmons".

'1'应该是"Daniel",但由于某种原因,$ first传递的值为'1'或TRUE.如果你交换两个赋值语句,以便首先计算$ second,那么你最终会得到与之前相反的结果.$ second ='1'和$ first ="Daniel"

任何人都可以解释为什么从类方法返回的字符串值"Daniel"只被改为条件语句的第一部分的int'1'?我通过PHP文档快速查看但无法找到解释.

目前,解决方法是将静态方法的返回值更改为true/false,然后在成功时使$ first = $ firstName等等.但这涉及更多的代码,我宁愿找出为什么这种方式不起作用.

php

0
推荐指数
2
解决办法
145
查看次数

标签 统计

jq ×1

json ×1

php ×1

select ×1