我有一个数组,所有键都带有空格。这会给无法定位空格的其他程序中的定位带来问题,并且在键中包含空格是一种不好的做法。
我正在寻找将删除键空间并替换为多维数组中的下划线的东西。最有可能必须是递归函数吗?
在另一个问题中发现了类似的问题,但与替换价值有关。
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;
}
}
参考方案
function fixArrayKey(&$arr)
{
$arr=array_combine(array_map(function($str){return str_replace(" ","_",$str);},array_keys($arr)),array_values($arr));
foreach($arr as $key=>$val)
{
if(is_array($val)) fixArrayKey($arr[$key]);
}
}
测试如下:
$data=array("key 1"=>"abc","key 2"=>array("sub 1"=>"abc","sub 2"=>"def"),"key 3"=>"ghi");
print_r($data);
fixArrayKey($data);
print_r($data);
输出:
Array
(
[key 1] => abc
[key 2] => Array
(
[sub 1] => abc
[sub 2] => def
)
[key 3] => ghi
)
Array
(
[key_1] => abc
[key_2] => Array
(
[sub_1] => abc
[sub_2] => def
)
[key_3] => ghi
)
PHP array_intersect_key但保留array2的值 - php我有2个数组:$array1 = ["b" => "no", "c" => "no", "d" => ["y" => "no"]]; $array2 = ["a" => …
PHP:为什么将日期设置为数组? - php为什么将此字符串组成一个数组,如何停止它?摘要:(获取日期)public function setDate(){ $this->date = date("Y-m-d"); return $date; } public function getDate(){ return $this->date; } $date = getDa…
php:将分钟取整到最近的四分之一小时,然后执行更多操作 - php最初的问题是这样的:取分钟数->转换为四分之一小时-> 1个四分之一小时为1个单位->输出单位我今天整天都在整理页面,几分钟前我的大脑就停止工作了,我只是不知道如何输出单位数量。我知道在此网站上发布问题会有所帮助。因此,用户输入的分钟数(不是小时和分钟,而是数分钟),站点需要输出单位数量。单位是一个刻钟。分钟总是四舍五入到最近的四分之一小时…
php Singleton类实例将在多个会话中保留吗? - php举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…
array_udiff返回不同的结果 - php我有这段代码来获取两个对象数组之间的区别:$diff = array_udiff($a, $b, function($obj_a, $obj_b) { return $obj_a->id - $obj_b->id; } ); $ a是[ { "id": "7", "attribute":…