小编k0p*_*kus的帖子

如何根据 PHP 中的值替换映射替换数组值?

假设我有一个数组:

$origin = ['value1', 'value2', 'value3', 'value4'];
Run Code Online (Sandbox Code Playgroud)

和替换地图数组:

$replace_map = [
    'value1' => 'replace1',
    'value2' => 'replace2',
    'value8' => 'replace8',
];
Run Code Online (Sandbox Code Playgroud)

我想替换$origin数组并期望结果是:

$result = myReplace($origin, $replace_map);

$result = ['replace1', 'replace2', 'value3', 'value4'];
Run Code Online (Sandbox Code Playgroud)

我可以循环$origin并为每个项目查找$replace_maparray_key_exists并将其替换为 中的值$replace_map

但我认为这不是最好的方法,听起来效率不高。

有更好的方法吗?

更进一步,如果origin值都是整数,但有些是负数,但map数组中的键都是正数,

喜欢:

$origin = [-12345, 23456];
$map = [12345 => 98765];
Run Code Online (Sandbox Code Playgroud)

还需要更改-12345-98765.

php arrays

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

如何在docker环境之间快速切换以进行开发?

我有多个项目需要定期切换.项目是通过设置docker-compose,但有些需要外部容器.

因此,为了docker-compose up -d在项目中运行,我必须首先切换到另一个目录并在那里启动一些基本服务容器(mysql,redis等的共享实例).

我不想并行运行所有容器,对于某些容器,它们不可能在同一个端口上监听.

我还发现,为了在开发中正常运行,某些容器需要在其中运行脚本,并且我发现自己重复执行相同的命令只是为了切换到项目.

我认为这可以自动化,我只是不确定如何解决这个问题.

如何设法快速切换docker环境?我的目标是只有一个班轮.

bash development-environment docker docker-compose

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

如何获取DomElement的字符串?

我有一个DomElement遗憾的是没有saveXML()方法DomDocument.

我试图获取DomElement的原始XML字符串表示.

我该怎么做?

php xml domdocument

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

我还应该使用什么来替代nodejs中的控制台?

我正在使用tslint:recommended规则集编写Node.js应用程序,它警告我console.log在我的代码中使用:

src/index.ts[1, 1]: Calls to 'console.log' are not allowed.
Run Code Online (Sandbox Code Playgroud)

我还应该使用什么?我应该使用某种system.out等价物吗?

这是我的tslint.json:

{
  "extends": "tslint:recommended"
}
Run Code Online (Sandbox Code Playgroud)

node.js typescript tslint

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

如何修复节点类型的 tsc 抛出错误?

我已经使用打字稿启动了一个新的节点项目。

我通过以下方式安装了打字稿:

$ npm install typescript@2 -g
Run Code Online (Sandbox Code Playgroud)

我的环境是这样的:

$ tsc -v
Version 2.0.0

$ node -v
v7.10.0
Run Code Online (Sandbox Code Playgroud)

我通过以下方式安装了节点的类型:

npm install --save @types/node
Run Code Online (Sandbox Code Playgroud)

我希望:

tsc
Run Code Online (Sandbox Code Playgroud)

只是没有错误地运行。相反,我收到了关于打字本身的错误:

366         isTTY?: true;
                    ~~~~

node_modules/@types/node/index.d.ts(366,17): error TS1110: Type expected.


1907         all?: false;
                   ~~~~~

node_modules/@types/node/index.d.ts(1907,15): error TS1110: Type expected.


1911         all: true;
                  ~~~~

node_modules/@types/node/index.d.ts(1911,14): error TS1110: Type expected.


1930         ttl: true;
                  ~~~~

node_modules/@types/node/index.d.ts(1930,14): error TS1110: Type expected.


4138     type DoesZapCodeSpaceFlag = 0 | 1;
                                     ~

node_modules/@types/node/index.d.ts(4138,33): error TS1110: Type expected.
Run Code Online (Sandbox Code Playgroud)

我的打字稿无论如何都会转译,但我宁愿修复这些错误。如何修复它们?

tsc typescript-typings typescript2.0

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

如何知道哪个规则违规导致tslint中的错误?

我关于as-syntax的问题相关,我想查找tslint规则以找出问题所在.唉,我只看到我的tslint运行的错误信息,如下所示:

ERROR: src/Metronome/JobFetcher.ts[13, 32]: Type assertion using the '<>' syntax is forbidden. Use the 'as' syntax instead.
ERROR: src/Metronome/JobConfig.ts[20, 1]: Consecutive blank lines are forbidden
ERROR: src/Metronome/JobFetcher.ts[7, 23]: ' should be "
Run Code Online (Sandbox Code Playgroud)

这里缺少的是导致该错误的规则.例如,我知道这条线' should be "quotemark我的规则有关tsconfig.json:

"quotemark": [
    true,
    "double",
    "avoid-escape"
],
Run Code Online (Sandbox Code Playgroud)

然而我不知道对于其他规则而且因为我依赖于我tslint:recommended的大部分配置,一旦发生错误我就很难查找它我以前没见过,就像as语法一样,我只能通过谷歌搜索as语法,而不是通过tslint的参考文档解决.

如何知道我的tslint配置的哪些规则导致错误消息?

typescript tslint

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

如何在 PhpStorm for TypeScript 中始终始终单行或多行每个导入语句?

给定 PhpStorm / WebStorm 中用于 TypeScript 的多行导入语句:

import {
    CsvParseTransform,
    FileSink,
    FileSource,
    FtpSource,
} from "pipeline";
Run Code Online (Sandbox Code Playgroud)

我的自动格式将其转换为单行:

import {CsvParseTransform, FileSink, FileSource, FtpSource,} from "pipeline";    
Run Code Online (Sandbox Code Playgroud)

然而,我也看到它在某些情况下做相反的事情。(我没有找到模式,我认为它与线的长度有关。我的假设是它只有超过阈值的多行。)

我希望行为保持一致,以减少拉取请求中的 git-diff 噪音。就我而言,我希望它始终是多行的。

我在哪里可以在 PhpStorm / WebStorm 中找到并设置该配置?

config phpstorm webstorm typescript

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

如何通过env文件传递docker中的环境变量?

鉴于此Dockerfile:

FROM alpine:3.7
ENV LAST_UPDATED=2018-02-22
ARG XDG_CACHE_HOME=/tmp/cache/
RUN apk update && \
    apk add libxslt && \
    apk add sed && \
    apk add py-pip && \
    apk add mariadb-client && \
    apk add bash bash-doc bash-completion && \
    pip install httpie && \
    rm -rf /var/cache/apk/*
WORKDIR /usr/deleter/
COPY delete.sh ./
ENTRYPOINT ["/usr/deleter/delete.sh"]
Run Code Online (Sandbox Code Playgroud)

我希望能够通过.env具有该key=value格式的文件传递多个变量.

$ cat stage.env 
MYSQL_DATABASE=database
MYSQL_HOST=127.0.0.1:3306
MYSQL_PASSWORD=password
MYSQL_PORT=3306
MYSQL_USER=a_user
Run Code Online (Sandbox Code Playgroud)

我的delete.sh唯一看起来像这样:

#!/bin/bash
set -e
set -o pipefail
echo "hello world"
echo …
Run Code Online (Sandbox Code Playgroud)

environment-variables docker alpine-linux

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

在哪里更改 WebStorm / PhpStorm 函数参数提示的颜色?

PhpStorm 2018.1.3 提供了命名函数参数的功能。

如果您有一个describe带有参数的函数description,并且callback您通过以下方式调用它:

 describe("Csv Task", async () => { ... })
Run Code Online (Sandbox Code Playgroud)

它将显示为:

phpstorm 渲染彩色参数提示的屏幕截图。

我不喜欢浅灰色背景上深灰色字体的硬可读性和与深色主题的鲜明对比。但我找不到在 PhpStorm 中更改这些颜色的位置。

如何改变参数提示的颜色?

color-scheme config intellij-idea phpstorm

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

如何在php单元测试中模拟日期?

我是 php 单元测试的新手。如何在下面的函数中模拟日期。目前它正在获取当前日期。但我想将模拟中的日期更改为一个月的第一天。

function changeStartEndDate() {

    if (date('j', strtotime("now")) === '1') {

        $this->startDate = date("Y-n-j", strtotime("first day of previous month"));

        $this->endDate = date("Y-n-j", strtotime("last day of previous month")) . ')';
    } else {

        $this->startDate = date("Y-n-j", strtotime(date("Y-m-01")));
        $this->endDate = date("Y-n-j", strtotime("yesterday"));
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过这样做,但它不起作用。

public function testServicesChangeStartEndDate() {
    $mock = $this->getMockBuilder('CoreFunctions')
        ->setMethods(array('changeStartEndDate'))
        ->getMock();

    $mock->method('changeStartEndDate')
        ->with(date("Y-n-j", strtotime(date("Y-m-01"))));

    $this->assertSame(
        '1',
        $this->core->changeStartEndDate()
    );

}
Run Code Online (Sandbox Code Playgroud)

php phpunit

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