如果条件匹配,则替换多维数组中的每个字符串
Replace every string in multidimensional array if conditions matched
好的,我有一个像这样的数组,
Array
(
[0] => Array
(
[0] => order_date.Year
[1] => =
[2] => 2024
),
[1] => Array
(
[0] => order_date.Quarter
[1] => =
[2] => 1
)
)
我想要做的是,在这个多维数组的任何元素中,我想替换任何具有 .
的字符串,并删除 .
之后的所有内容
所以新数组应该是这样的,
Array
(
[0] => Array
(
[0] => order_date
[1] => =
[2] => 2024
),
[1] => Array
(
[0] => order_date
[1] => =
[2] => 1
)
)
我已经试过了,
foreach ($filter as $key => $value) {
if(is_array($value)) {
$variable = substr($value[0], 0, strpos($value[0], "."));
$value[0] = $variable;
}
}
print_r($filter);
我得到 $value[0]
作为 order_date 但无法弄清楚如何将它分配给 $filter
数组而不影响数组中的其他值;
$value
变量没有链接到 foreach 循环中的原始数组。
您可以使用符号“&”
来引用原始数组
foreach ($filter as $key => &$value) { ... }
或者您可以使用旧式密钥嵌套
$filter[$key][0] = $variable;
请看这里
这将在 之后取消值。在任何多维数组的每个元素中。
// $in is the source multidimensional array
array_walk_recursive ($in, function(&$item){
if (!is_array($item)) {
$item = preg_replace("/\..+$/", "", $item);
}
});
好的,我有一个像这样的数组,
Array
(
[0] => Array
(
[0] => order_date.Year
[1] => =
[2] => 2024
),
[1] => Array
(
[0] => order_date.Quarter
[1] => =
[2] => 1
)
)
我想要做的是,在这个多维数组的任何元素中,我想替换任何具有 .
的字符串,并删除 .
所以新数组应该是这样的,
Array
(
[0] => Array
(
[0] => order_date
[1] => =
[2] => 2024
),
[1] => Array
(
[0] => order_date
[1] => =
[2] => 1
)
)
我已经试过了,
foreach ($filter as $key => $value) {
if(is_array($value)) {
$variable = substr($value[0], 0, strpos($value[0], "."));
$value[0] = $variable;
}
}
print_r($filter);
我得到 $value[0]
作为 order_date 但无法弄清楚如何将它分配给 $filter
数组而不影响数组中的其他值;
$value
变量没有链接到 foreach 循环中的原始数组。
您可以使用符号“&”
foreach ($filter as $key => &$value) { ... }
或者您可以使用旧式密钥嵌套
$filter[$key][0] = $variable;
请看这里
这将在 之后取消值。在任何多维数组的每个元素中。
// $in is the source multidimensional array
array_walk_recursive ($in, function(&$item){
if (!is_array($item)) {
$item = preg_replace("/\..+$/", "", $item);
}
});