修改php中关联数组中的空键



我在wordpress中有一个很长的表单,它由用户填写,然后通过API提交给第三方crm。

问题是,如果用户不填写字段,这些字段将为false或为空,remote_post将失败。

我试着用foreach给空字段添加一个自定义值,但它们在关联数组中,我不知道如何修改它

这是我到目前为止的代码(我更改了值,但结构相同(:

$body = [
'array1' => [
'key1' => user(value),
'key2' => user(value),
'key3' => user(value),
],
'array2' => [
'key1' => user(value),
'key2' => user(value),
'key3' => user(value),
],
'array3' => [
[   
'key1' => user(value),
'key2' => user(value),
'key3' => user(value),
],
[   
'key1' => user(value),
'key2' => user(value),
'key3' => user(value),
],
],
'array4' => [
'subarrray1' => [
'key1' => user(value),
'key2' => user(value),
'key3' => user(value),
],
'subarray2' => [
'key1' => user(value),
'key2' => user(value),
'key3' => user(value),
],
],

];

//this work only with some arrays and only change value inside the second array
foreach($body as $row => $innerArray){
foreach($innerArray as $key => $value){
if ( empty($value) ) $value = 'empty o whatever';
} 
}

您可以像这个一样修改原始数组

foreach($body as $row => $innerArray){
foreach($innerArray as $key => $value){
if ( empty($value) ) {
$body[$row][$key] = 'empty o whatever';
}
} 
}

您还可以通过在foreach循环中添加&符号。更改值将更新原始数组,如下例所示:

foreach($body as $row => &$innerArray){
foreach($innerArray as $key => &$value){
$value = 'empty o whatever';
} 
}

您可以使用递归

$body = [
'array1' => [
'key1' => 123,
'key2' => '',
'key3' => '',
],
'array2' => [
'key1' => '',
'key2' => '',
'key3' => 123,
],
'array3' => [
[
'key1' => '',
'key2' => '',
'key3' => '',
],
[
'key1' => '',
'key2' => '',
'key3' => 123,
],
],
'array4' => [
'subarrray1' => [
'key1' => '',
'key2' => 123,
'key3' => '',
],
'subarray2' => [
'key1' => '',
'key2' => '',
'key3' => '',
],
]
];

function replace_empty(&$arr) {
if(is_iterable($arr)) {
foreach ($arr as &$row) {
replace_empty($row);
}
} elseif (empty($arr)) {
$arr = 'empty o whatever';
}
}
replace_empty($body);
var_dump($body);

最新更新