在PHP中,是否可以将|xyz部分从关键字名称中删除?阵列如下:
array(30) {
["1970-01-01|802"]=>
array(4) {
["id"]=>
string(3) "176"
["datum"]=>
string(10) "1970-01-01"
["title"]=>
string(8) "Vorschau"
["alias"]=>
string(16) "vorschau-v15-176"
}
["1970-01-01|842"]=>
array(4) {
["id"]=>
string(3) "176"
["datum"]=>
string(10) "1970-01-01"
["title"]=>
string(8) "Vorschau"
["alias"]=>
string(16) "vorschau-v15-176"
} ...
谢谢你的帮助,
toni
例如,您可以使用以下内容:
$newArray = array();
foreach( $oldArray as $key => $value ) {
$newArray[ substr( $key, 0, 10 ) ] = $value;
}
或者修改阵列:
foreach( $someArray as $key => $value ) {
unset( $someArray[ $key ] );
$someArray[ substr( $key, 0, 10 ) ] = $value;
}
两种解决方案都会失去价值
由于源数组中的密钥是
1970-01-01|802
1970-01-01|842
输出数组将丢失一些数组值:两个键都映射到一个目标键:
1970-01-01
保留所有值
如果不想丢失值,请尝试以下操作:
$newArray = array();
foreach( $someArray as $key => $value ) {
$newKey = substr( $key, 0, 10 );
if ( ! isset( $newArray[ $newKey ] )) {
$newArray[ $newKey ] = array();
}
$newArray[ $newKey ][] = $value;
}
此解决方案的结果数组结构:
array(
'1970-01-01' =>
array(
0 => ...,
1 => ...
),
'1970-01-02' =>
array(
0 => ...,
1 => ...,
2 => ...
),
...
);
有点。。只需使用修剪的键创建一个新数组,然后将旧的aray设置为新的。
$newArray = array();
foreach ($arrayList as $key => $data) {
$keyParts = explode("|", $key);
$newArray[$keyParts[0]] = $data;
}
$arrayList = $newArray;
这是可能的,但在这种情况下,您最终会得到两个相同的数组键。
["1970-01-01"] and ["1970-01-01"]
在这种情况下,它后面的xyz是必需的。
您可以使用preg_replace
:
$keys = preg_replace('/(.+)'|'d+/', '$1', array_keys($arr));
$arr = array_combine($keys, $arr);