我在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);