How to remove spaces in array keys names in php?(如何在php中删除数组键名称中的空格?)
问题描述
我正在尝试删除数组键名称中的所有空格,即 str_replace(' ','',$value) (或者最坏的转换场景将它们替换为下划线 (_) )
I am trying to remove all spaces in array keys names i.e. str_replace(' ','',$value) (or worst cast scenario replace them with underscores (_) )
并且我正在尝试在我的多维数组的最深层次(如下所示)执行此操作(因为其他层/层次没有空格(感谢上帝!))
and I am trying to do this at the deepest level (shown below) of my multidimensional array (because other layers/levels don't have spaces (THANK GOD!))
[...]
[ownPagestoriesbystorytype] => Array
(
[type] => pagestoriesbystorytype
[object_id] => 12365478954
[metric] => page_stories_by_story_type
[end_time] => 1386057600
[period] => 86400
[ownValues] => Array
(
[type] => pagestoriesbystorytypemetrics
[fan] => 1913
[page post] => 153
[user post] => 24
)
)
[ownPagestorytellersbystorytype] => Array
(
[type] => pagestorytellersbystorytype
[object_id] => 12365478954
[metric] => page_storytellers_by_story_type
[end_time] => 1386057600
[period] => 86400
[ownValues] => Array
(
[type] => pagestorytellersbystorytypemetrics
[fan] => 1902
[page post] => 137
[user post] => 9
)
)
[...]
到目前为止,我的尝试没有结果:
So far my attempts have been fruitless :
[...]
if (is_array($value))
{
$keys = str_replace(' ','',array_keys($value));
$values = array_values($value);
$value = array_combine($keys,$values);
}
[...]
[...]
foreach ($value as $k => $v)
{
$b = str_replace(' ','',$k);
$value[$b] = $value[$k];
unset ($value[$k]);
}
[...]
上面的代码不起作用,但是如果我把 print_r($value);在循环结束时,您可以清楚地看到空格正在被删除,只是不知何故最终结果以空格结束(STILL).
The codes above do not work, however if I put print_r($value); at the end of the loop you can clearly see that spaces are being removed, just somehow the end result ends up being with spaces (STILL).
整个循环如下所示:
for ($i=0;$i<count($results);$i++)
{
for ($j=0;$j<count($results[$i]);$j++)
{
foreach($results[$i][$j] as $key => $value)
{
$typee = ['type' => strtolower(str_replace('_','',$results[$i][$j]['metric']))];
array_insert($results[$i][$j],$typee,0);
if (is_array($value))
{
$keys = str_replace(' ','',array_keys($value));
$values = array_values($value);
$value = array_combine($keys,$values);
$type = ['type' => strtolower(str_replace('_','',$results[$i][$j]['metric']))."metrics"];
array_insert($results[$i][$j]['value'],$type,0);
$results[$i][$j]['ownValues'] = $results[$i][$j][$key];
unset($results[$i][$j][$key]);
}
}
}
}
你可以在这里看到整个数组的样子:
And you can see how the whole array looks like here:
如何使用我选择的键和值(在 php 中)将数组添加到另一个数组的每个元素?
有什么建议吗?:)
推荐答案
这将有助于:
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中删除数组键名称中的空格?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在php中删除数组键名称中的空格?
基础教程推荐
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- HTTP 与 FTP 上传 2021-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- 使用 PDO 转义列名 2021-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01