假设我有一个数组:
$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_map,array_key_exists并将其替换为 中的值$replace_map,
但我认为这不是最好的方法,听起来效率不高。
有更好的方法吗?
更进一步,如果origin值都是整数,但有些是负数,但map数组中的键都是正数,
喜欢:
$origin = [-12345, 23456];
$map = [12345 => 98765];
Run Code Online (Sandbox Code Playgroud)
还需要更改-12345为-98765.
我有多个项目需要定期切换.项目是通过设置docker-compose,但有些需要外部容器.
因此,为了docker-compose up -d在项目中运行,我必须首先切换到另一个目录并在那里启动一些基本服务容器(mysql,redis等的共享实例).
我不想并行运行所有容器,对于某些容器,它们不可能在同一个端口上监听.
我还发现,为了在开发中正常运行,某些容器需要在其中运行脚本,并且我发现自己重复执行相同的命令只是为了切换到项目.
我认为这可以自动化,我只是不确定如何解决这个问题.
如何设法快速切换docker环境?我的目标是只有一个班轮.
我有一个DomElement遗憾的是没有saveXML()方法DomDocument.
我试图获取DomElement的原始XML字符串表示.
我该怎么做?
我正在使用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) 我已经使用打字稿启动了一个新的节点项目。
我通过以下方式安装了打字稿:
$ 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)
我的打字稿无论如何都会转译,但我宁愿修复这些错误。如何修复它们?
与我关于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配置的哪些规则导致错误消息?
给定 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 中找到并设置该配置?
鉴于此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) PhpStorm 2018.1.3 提供了命名函数参数的功能。
如果您有一个describe带有参数的函数description,并且callback您通过以下方式调用它:
describe("Csv Task", async () => { ... })
Run Code Online (Sandbox Code Playgroud)
它将显示为:

我不喜欢浅灰色背景上深灰色字体的硬可读性和与深色主题的鲜明对比。但我找不到在 PhpStorm 中更改这些颜色的位置。
如何改变参数提示的颜色?
我是 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 ×3
typescript ×3
config ×2
docker ×2
phpstorm ×2
tslint ×2
alpine-linux ×1
arrays ×1
bash ×1
color-scheme ×1
domdocument ×1
node.js ×1
phpunit ×1
tsc ×1
webstorm ×1
xml ×1