我想转换这个Array [4]不应该为null的数组,它可以给出空格(空字符串)。
Array (
[0] => 1
[1] => 4
[2] => 0
[3] => V
[4] =>
[5] => N
);
(改变的原因,与一般问题无关)
Fatal error: Uncaught exception
'PDOException' with message 'Database
error [23000]: Column 'message' cannot
be null, driver error code is 1048' in
答案 0 :(得分:29)
PHP 5.3 +
$array = array_map(function($v){
return (is_null($v)) ? "" : $v;
},$array);
答案 1 :(得分:20)
然后你应该循环遍历数组元素,检查每个值为null并用空字符串替换它。这样的事情:
foreach ($array as $key => $value) {
if (is_null($value)) {
$array[$key] = "";
}
}
此外,您可以实现检查功能并使用array_map()功能。
答案 2 :(得分:4)
这会将数组映射到一个新数组,该数组利用null三元运算符来包含数组的原始值,如果该值为null,则为空字符串。
$array = array_map(function($v){
return $v ?: '';
},$array);
答案 3 :(得分:2)
您可以改用它。
array_map(function($val){return is_null($val)? "" : $val;},$result);
答案 4 :(得分:1)
foreach($array as $key=>$value)
{
if($value===NULL)
{
$array[$key]="";
}
}
答案 5 :(得分:1)
使用此功能。这将在嵌套数组中将null替换为空字符串
$arr = array(
"key1"=>"value1",
"key2"=>null,
"key3"=>array(
"subkey1"=>null,
"subkey2"=>"subvalue2"),
"key4"=>null);
echo json_encode(replace_null_with_empty_string($arr));
function replace_null_with_empty_string($array)
{
foreach ($array as $key => $value)
{
if(is_array($value))
$array[$key] = replace_null_with_empty_string($value);
else
{
if (is_null($value))
$array[$key] = "";
}
}
return $array;
}
输出将是:
{
"key1": "value1",
"key2": "",
"key3": {
"subkey1": "",
"subkey2": "subvalue2"
},
"key4": ""
}
答案 6 :(得分:1)
以上是我在上述答案中未提及的在线技巧:
$val = strval(@$arr["notfound"]); // will not generate errors and
// defaults to an empty string
这对于$_GET
参数加载非常方便,可以保持简洁和可读性。如果您只接受整数,则可以将strval()
替换为trim()
...或替换为intval()
。
intval
的默认值如果丢失则为0
或非数字值。 strval
的默认值为""
,如果为空,null或false。
$val_str = strval(@$_GET['q']);
$val_int = intval(@$_GET['offset']);
现在对于一个数组,你仍然需要遍历每个值并设置它。但它非常易读,IMO:
$arr = Array (1, 4, "0", "V", null, false, true, 'true', "N");
foreach ($arr as $key=>$value) {
$arr[$key] = strval($value);
}
echo ("['".implode("','", $arr)."']");
结果如下:
['1','4','0','V','','','1','true','N']
有趣的是,true
变为“1”,但'true'
保持字符串,false
变为空字符串""
。
现在使用$arr[$key] = intval($value);
的相同数据产生了这个结果:
['1','4','0','0','0','0','1','0','0']
答案 7 :(得分:1)
甚至有更好/更短/更简单的解决方案。汇编已经给出的答案。对于初始数据
[1, 4, "0", "V", null, false, true, 'true', "N"]
使用
$result = array_map('strval', $arr);
$ result 将是
['1', '4', '0', 'V', '', '', '1', 'true', 'N']
这甚至在php4中也可以工作:)
答案 8 :(得分:0)
可以使用以下命令一行解决该问题:
array_walk($array_json_return,function(&$item){$item=strval($item);});
这里$ array_json_return是数组。
答案 9 :(得分:0)
迟到的回答;-) 鉴于您插入数据的方式,您可以简单地将值转换到所需的类型,这应该可以工作。