【问题标题】:Replace empty string in double quotes in php [duplicate]在php中替换双引号中的空字符串[重复]
【发布时间】:2012-05-05 08:19:35
【问题描述】:

可能重复:
Search and replace inside an associative array

我想这可能以前被问过。但我只想要一个简单的解决方案。

我有一个这样的数组:

  Array (   "name" => "Krish",
            "age" => "27",
            "COD" => ""
        )

我想把“”换成“0”

它是一个多维数组。返回值也应该是数组。

编辑:我尝试了 preg_replace 和 str_replace。出于某种原因,这些对我不起作用。

【问题讨论】:

  • 开始写代码。如果你不能让它工作,回来再问一次。如果您只是在寻找开始的提示,则需要遍历数组并将"" 的任何值替换为0
  • @Kevin Rave preg_replace 和 str_replace 用于字符串,而您使用的是数组。您应该将其转换为字符串。或循环数组并根据您的要求对其进行操作。考虑下面我的例子

标签: php arrays replace double-quotes


【解决方案1】:
$entry = array("name" => "Krish",
               "age" => "27",
               "COD" => "");
$arr = array_filter($entry, 'valcheck');
print_r($entry); //ORIGINAL ARRAY
print_r($arr); //MODIFIED ARRAY
function valcheck($var)
{
    if($var === "")
        return 0;
    else
        return $var;
}

【讨论】:

    【解决方案2】:
    <?php
    $arr=array(
        "name" => "Krish",
        "age" => "27",
        "COD" => ""
    );
    
    print_r(array_map(function($i){return (''===$i)?0:$i;},$arr));
    ?>
    

    【讨论】:

      【解决方案3】:

      如果你的数组是$array:

      $array['COD'] = "0";
      

      【讨论】:

      • 它是一个多维数组。递归地想要它。
      【解决方案4】:
      $array = array(
          "name" => "Krish",
          "age" => "27",
          "COD" => ""
      );
      

      你可以循环数组并替换你想要的

      foreach($array as $key => $value)
      {
          if($value == "") $array[$key] = 0;
      }
      

      注意:

      如果你知道它是什么键,你可以这样做

      $array['cod'] = 0;
      

      【讨论】:

      • 我们需要循环吗?认为应该有一个单行代码。
      • 这只会改变$value的本地值。您应该使用参考而不是&amp;$value
      • 是的,如果要确定该值是否为空,则需要一个循环。如果您知道要替换的键是什么,那么您可以在一行代码中完成。
      • @Mathieu Imbert & jeroen 感谢您指出这一点。修好了
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2019-05-22
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多