【问题标题】:replace text in associative array with text from another array用另一个数组中的文本替换关联数组中的文本
【发布时间】:2013-05-13 22:38:48
【问题描述】:

我有一个这样的数组

$tags = 

Array
(
   [0] => Array
    (
        [0] => [first_name] [last_name]
        [2] => [city],[state] [zipcode]
    )

 )

我也有这样的清单

$array_list = 

  [0] => Array
    (
        [first_name] => Bob
        [last_name] => Johnson
        [city] => mycity
        [state] => NY
        [zipcode] => 911564
    )

[1] => Array
    (
        [first_name] => John
        [last_name] => Doe
        [city] => New York
        [state] => NY
        [zipcode] => 9115

    )

[2] => Array
    (
        [first_name] => James
        [last_name] => Belt
        [city] => Los Angeles
        [state] => CA
        [zipcode] => 915456
    )

我基本上想用数组中的实际值替换括号内的所有标签。我尝试了以下方法,但它似乎只正确返回了一个值

 foreach($tags as $key=>$value) {
     $data[$key] = preg_replace_callback('/[\[|<](.*)[\]\)]/U', 'replace_text', $value);
 }



 function replace_text($matches) {
    foreach ($array_list as $arg) {
       return $args[$matches[1]];

    }        

  }

我只得到一个看起来像这样的结果

Array
(
   [0] => Array
    (
        [0] => Bob Johnson
        [1] => mycity,NY 911564
    )

)

我该怎么做才能将所有结果返回到具有所有正确值的数组中

我尝试更改函数 replace_text 以将值设置为数组并像这样返回数组

 function replace_text($matches) {
    foreach ($array_list as $arg) {
       $new_array[]= $args[$matches[1]];

    }    

     return $new_array;

  }

但这会返回

 Array
(
[0] => Array
    (
        [0] => Array Array
        [1] => Array
        [2] => Array,Array Array
    )

 )

我还应该补充一点,所有这些内容都是动态的,所以一次它可能是 [first_name] 和下一个 [name_first] 或其他东西,这就是为什么我需要细化每个括号并将括号内的文本替换为什么匹配数组。

【问题讨论】:

    标签: php associative-array preg-replace-callback


    【解决方案1】:

    您对此有何看法:

    $output = array();
    foreach($array_list as $arraykey => $array) {
         foreach($tags[0] as $tagkey => $tag)
            $output[$arraykey][$tagkey] = preg_replace_callback('/[\[|<](.*)[\]\)]/U', 'replace_text', $tag);
    }
    
    function replace_text($matches) {
        global $arraykey, $array_list;
        return $array_list[$arraykey][$matches[1]];
    }
    

    如果对你不好,你能显示预期的 $output 吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 2013-11-20
      • 2012-09-14
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多