我有一个数组,其中的键和值都用双引号引起来。有没有办法删除双引号?
var_dump($my_array);
array(2) {
[0]=>
array(1) {
[""Phone number""]=>
string(15) ""+1 555000555""
}
[1]=>
array(1) {
[""Phone number""]=>
string(15) ""+371 6665000559""
}
}
我尝试遍历每个元素并删除引号,但出现错误未定义变量$ new_array
foreach($my_array as $key => $value) {
$new_array[] = str_replace('""', '', $key);
$new_array[] = str_replace('""', '', $value);
}
答案 0 :(得分:4)
虽然修复数据源会更好,但是您的代码几乎就在那里。您应该先定义任何变量,然后再使用它们,而进行替换的方式并未使用新键添加项目...
$new_array = [];
foreach($my_array as $key => $value) {
$new_array[str_replace('""', '', $key)] = str_replace('""', '', $value);
}
答案 1 :(得分:1)
我要修剪
$test = array (
0 =>
array (
"\"Phone number\"" => "\"+1 555000555\""
),
1 =>
array (
"\"Phone number\"" => "\"+371 6665000559\""
)
);
function trimQuotes(array $array){
$o = [];
foreach($array as $k=>$v){
if(is_array($v)){
$o[trim($k,"\"'")] = trimQuotes($v);
}else{
$o[trim($k,"\"'")] = trim($v,"\"'");
}
}
return $o;
}
var_dump(trimQuotes($test));
这将删除开头和结尾的"
和'
,而没有删除字符串中其他引号的风险。
输出:
array(2) {
[0]=>
array(1) {
["Phone number"]=>
string(12) "+1 555000555"
}
[1]=>
array(1) {
["Phone number"]=>
string(15) "+371 6665000559"
}
}
简单的字符串替换方法的问题在于,它将删除字符串中的所有引号,而不管它们在哪里,但这可能对您来说不是问题。