キー全体にスペースを含む配列があります。これは、スペースをターゲットにできない他のプログラムでターゲットを設定する際に問題を引き起こし、キーにスペースを含めることはお勧めできません。
キースペースを削除して、多次元配列のアンダースコアに置き換えるものを探しています。ほとんどの場合、再帰関数である必要がありますか?
別の質問で似たようなものを見つけましたが、値を置き換えることについてでした。
foreach ($all_regions as $key => $value){
$all_regions[$key] = strtolower(str_replace(' ', '_', $value));
}
これを複製する必要がありますが、キー用です。私が直面している問題は、キー自体を参照する方法を考えられることです。これは、上記の方法のようにプッシュしようとすると、アンダースコアで別のキーが再作成されるだけだからです。
配列の一部です。これは奥が深いです。
Array
(
[0] => Array
(
[Line Identifier] => PID
[Set ID] => 1
[User ID] =>
[Requests] => Array
(
[0] => Array
(
[Line Identifier] => OBR
[Set ID] => 1
[Placer Order Number] => 021120091525
[Results] => Array
(
[0] => Array
(
[Line Identifier] => OBX
[Set ID] => 1
[1] => Array
(
[Line Identifier] => OBX
[Set ID] => 2
以下で試してみましたが、Key element cannot be a reference
private function fixArrayKeys($array){
if(is_array($array)){
foreach($array as &$key => $value){
if(!is_array($key))
$array[strtolower(str_replace(' ', '_', $key))] = $value;
else
fixArrayKeys($array);
}
} else {
return $array;
}
}