0

私はそのような配列を持っています

$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]];

    }        

  }

そのように見える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] またはその他の何かになる可能性があることも付け加えておく必要があります。配列。

4

1 に答える 1

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 を表示できますか?

于 2013-05-13T23:30:27.723 に答える