在我作为php开发人员的日常工作中,我发现自己在这里&再次处理数组。
鉴于:
$array1; // array to process
$keysToKeep = ['k1', 'k2', 'k3'];
$keysToTranslate = ['k1' => 'hello1'];
$keysToLower = ['k2', 'k3'];
流程的典型示例是:
$arrayProcessed = [];
foreach ($array1 as $k => $v) {
if (array_key_exists($k, $keysToKeep) {
$arrayProcessed[$k] = $v;
}
if (isset($keysToTranslate[$k]) ) {
$arrayProcessed[$keysToTranslate[$k]] = $v;
unset($arrayProcessed[$k]);
}
}
foreach ($keysToLower AS $k) {
if ($array_key_exists($k, $arrayProcessed) ) {
$arrayProcessed[$k] = strtolower($array1[$k]);
}
}
我梦见一个能让我写这个的api:
$arrayProcessed = owArray::getInstance($array1)
->keepKeys($keysToKeep)
->renameKeys($keysToTranslate)
->map($keysToLower, 'strtolower')
;
有人能指出我走向那个方向的图书馆吗?
提前获取任何提示; - )
答案 0 :(得分:0)
Laravel非常棒Collections。使用它们你想要做的事情可以这样写:
array(3) {
["k1"]=>
string(6) "Hello1"
["k2"]=>
string(3) "bar"
["k3"]=>
string(3) "baz"
}
结果将是:
$keysToLower
我几乎可以确定最后一部分(关于case
)可以写得更短。
"Refactoring to Collections"有一本书和一门课程Adam Wathan。虽然它们不是免费的,但值得一试。