Как преобразовать значения null в пустую строку в массиве php?
Я хочу преобразовать этот массив, который массив[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
7 ответов
тогда вы должны просто перебирать элементы массива, проверять каждое значение на null и заменять его пустой строкой. Что-то вроде этого:--2-->
foreach ($array as $key => $value) {
if (is_null($value)) {
$array[$key] = "";
}
}
кроме того, вы можете реализовать функции проверки и использовать использование array_map()
это сопоставит массив с новым массивом, который использует троичный оператор null для включения исходного значения массива или пустой строки, если это значение равно null.
$array = array_map(function($v){
return $v ?: '';
},$array);
вы можете использовать это вместо этого.
array_map(function($val){return is_null($val)? "" : $val;},$result);
вот онлайн-трюк, который я не видел, упомянутый в приведенных выше ответах:
$val = strval(@$arr["notfound"]); // will not generate errors and
// defaults to an empty string
это очень удобно для $_GET
загрузка параметров, чтобы держать вещи короткими и читаемыми. Бонус, вы можете заменить strval()
С trim()
... или intval()
если вы принимаете только целые числа.
по умолчанию intval
будет 0
если отсутствует или не числовое значение. Значение по умолчанию для strval
is ""
если пусто, null или ложный.
$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']
использовать эту функцию. Это заменит 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": ""
}
попробуйте онлайн здесь:https://3v4l.org/7uXTL