使用phpstorm更改/转换数组代码
我想知道是否有可能对phpstorm进行更改/转换使用phpstorm更改/转换数组代码,php,arrays,phpstorm,Php,Arrays,Phpstorm,我想知道是否有可能对phpstorm进行更改/转换 $arr[0][0][0] = 0; $arr[0][0][1] = 1; $arr[0][1][0] = 2; $arr[0][1][1] = 3; $arr[1][0][0] = 4; 进入 和/或相反 我只找到了一个在数组之间切换的函数。。。和[…]。 也许有一个插件或什么东西,我可以执行一个小脚本来做这件事? 即使是这个我也找不到。但也许我错过了什么 通过多次使用正则表达式编辑可能是可能的。因为@LazyOne评论说这是不可能的 但是
$arr[0][0][0] = 0;
$arr[0][0][1] = 1;
$arr[0][1][0] = 2;
$arr[0][1][1] = 3;
$arr[1][0][0] = 4;
进入
和/或相反
我只找到了一个在数组之间切换的函数。。。和[…]。
也许有一个插件或什么东西,我可以执行一个小脚本来做这件事?
即使是这个我也找不到。但也许我错过了什么
通过多次使用正则表达式编辑可能是可能的。因为@LazyOne评论说这是不可能的 但是我发现了一个使用regex find&replace函数的解决方法: 按索引分组分隔数组,最后一个索引除外
// Group 1 (0,0)
$arr[0][0][0] = 0;
$arr[0][0][1] = 1;
$arr[0][0][2] = 'test';
// Group 2 (0,1)
$arr[0][1][0] = 2;
$arr[0][1][1] = 3;
// Group 3 (1,0)
$arr[1][0][0] = 4;
启动数组:对于每个组,替换第一个匹配的\$.+\[.+\]\s*=\s*[\s\s]+?;按$1=[$2=>$3];。你得到
// Group 1 (0,0)
$arr[0][0] = [0 => 0]; // <- Array started
$arr[0][0][1] = 1;
$arr[0][0][2] = 'test';
// Group 2 (0,1)
$arr[0][1] = [0 => 2]; // <- Array started
$arr[0][1][1] = 3;
// Group 3 (1,0)
$arr[1][0] = [0 => 4]; // <- Array started
重复步骤3,直到没有匹配项
// Group 1 (0,0)
$arr[0][0] = [0 => 0,
1 => 1,
2 => 'test']; // <- Index appended
// Group 2 (0,1)
$arr[0][1] = [0 => 2,
1 => 3];
// Group 3 (1,0)
$arr[1][0] = [0 => 4];
这仅在必须转换非常大的数组时才实用
注意:必须删除示例中的注释
有趣的事实是,这也适用于支持正则表达式查找和替换的其他编辑器或IDE。所有代码格式规则都位于“设置|代码样式”中。如果您无法使用现有选项实现预期结果。。那么你可能只会向他们提交一张罚单,也许他们将来会实施这样的规则。另外,您提供的代码示例在格式化之前需要进行一些特殊的代码转换-这是不可能的,我也不希望它很快出现。我认为这是对标题的一点误解。我关心的是这种转变。正如我已经提到的:这种转变是不可能的
// Group 1 (0,0)
$arr[0][0] = [0 => 0,
1 => 1]; // <- Index appended
$arr[0][0][2] = 'test';
// Group 2 (0,1)
$arr[0][1] = [0 => 2,
1 => 3]; // <- Index appended
// Group 3 (1,0)
$arr[1][0] = [0 => 4];
// Group 1 (0,0)
$arr[0][0] = [0 => 0,
1 => 1,
2 => 'test']; // <- Index appended
// Group 2 (0,1)
$arr[0][1] = [0 => 2,
1 => 3];
// Group 3 (1,0)
$arr[1][0] = [0 => 4];
$arr = [0 => [0 => [0 => 0,
1 => 1,
2 => 'test'],
1 => [0 => 2,
1 => 3]],
1 => [0 => [0 => 4]]];