【问题标题】:Replace every string in multidimensional array if conditions matched如果条件匹配,则替换多维数组中的每个字符串
【发布时间】:2022-01-13 03:04:00
【问题描述】:

好的,所以我有一个像这样的数组,

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 数组而不影响数组中的其他值;

【问题讨论】:

  • 您所描述的是一项任务,而不是一个问题。不向我们展示您解决任务的尝试将导致不良反应。请添加您当前的尝试吗?
  • @Cid 我提交了失败的尝试。抱歉,我只是无法让它工作,所以我在这里问了。
  • 不太明白你的问题是什么。您已经更改了$value[0],那么为什么不简单地通过$filter[$key] = $value 分配给$filter 呢?

标签: php arrays multidimensional-array


【解决方案1】:

这将在 .在任何多维数组的每个元素中。

// $in is the source multidimensional array
array_walk_recursive ($in, function(&$item){
    if (!is_array($item)) {
        $item = preg_replace("/\..+$/", "", $item);
    }
});

【讨论】:

    【解决方案2】:

    $value 变量未与 foreach 循环中的原始数组链接。 您可以使用与号“&”来引用原始数组

    foreach ($filter as $key => &$value) { ... }
    

    或者你可以使用老派的密钥嵌套

    $filter[$key][0] = $variable;
    

    请看这里https://stackoverflow.com/a/10121508/9429832

    【讨论】:

    • 谢谢伙计。我没注意到。也不知道我也可以在 PHP 中使用参考。你也可以投票问题吗?
    猜你喜欢
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 2021-07-11
    • 1970-01-01
    • 2020-09-23
    • 2022-01-20
    相关资源
    最近更新 更多