如何从数组键和值中删除双引号?

时间:2018-10-29 14:41:22

标签: php arrays

我有一个数组,其中的键和值都用双引号引起来。有没有办法删除双引号?

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);
}

2 个答案:

答案 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"
  }
}

Sandbox

简单的字符串替换方法的问题在于,它将删除字符串中的所有引号,而不管它们在哪里,但这可能对您来说不是问题。