代码之家  ›  专栏  ›  技术社区  ›  tree em

在PHP数组中用另外两个元素替换一个元素

  •  4
  • tree em  · 技术社区  · 14 年前

    {a, b, ..., w, x, ..., z}
    

    插入多个元素 {m, n, ..., r} 处于 x . 最终阵列:

    {a, b, ..., w, m, n, ..., r, ..., z}
    

    有一个返回数组

    $return_arr = array(
                        'saa'=>'A2223',
                        'asab'=>'asB',
                        'wqed'=>'D234',
                        'wqasee'=>'Esd',
                        'wqewf'=>'Ffds',
                        'monwa'=>'monwaaas'//*
                        );
    

    如果此数组中存在元素'monwa'=>'monwaaas',它将返回新数组。新数组将是我们找到的下一个元素顺序 例如
    如果我们有$return\u arr=>新的\u数组应该是

    (add two more element ('hi'=>'HI','hello'=>'HELLO')
    
    $new_array = array(
                        'saa'=>'A2223',
                        'asab'=>'asB',
                        'wqed'=>'D234',
                        'wqasee'=>'Esd',
                        'wqewf'=>'Ffds',
                        'hi'=>'HI',
                        'hello'=>'HELLO'
                        );
    

    如果

    $return_arr = array(
                        'saa'=>'A2223',
                        'asab'=>'asB',
                        'monwa'=>'monwaaas',//*
                        'wqed'=>'D234',
                        'wqasee'=>'Esd',
                        'wqewf'=>'Ffds'
                        );
    

    $new_array = array(
                        'saa'=>'A2223',
                        'asab'=>'asB',
                        'hi'=>'HI',
                        'hello'=>'HELLO',
                        'wqed'=>'D234',
                        'wqasee'=>'Esd',
                        'wqewf'=>'Ffds'
                        );
    

    等等。。。

    有人知道怎么做吗?

    谢谢

    3 回复  |  直到 14 年前
        1
  •  1
  •   Artefacto    14 年前

    Example on an online interpreter .

    1) 搜索该元素的位置,2)删除该元素,3)然后将其插入以前的位置。

    $pos = array_search_pos($arr, 'monwa');
    unset($arr['monwa']);
    $result = array_insert_at($arr, $pos, array("key1"=>"value1", "key2"=>"value2"));
    

    使用这些功能:

    function array_search_pos($arr, $key) {
        $i = 0;
        foreach ($arr as $k => $v) {
            if ("$k" == "$key")
                return $i;
            $i++;
        }
        return false;
    }
    
    function array_insert_at($array, $pos, $values) {
        return array_slice($array, 0, $pos, true) +
            $values +
            array_slice($array, $pos, count($array)-$pos, true);
    }
    
        2
  •  0
  •   Maulik Vora    14 年前

    我敢肯定,这将保持同样的立场。

    $return\数组将作为$new\数组中的位置进行归档。

    $new_array = array(
                        'saa'=>'A2223',
                        'asab'=>'asB',
                        'monwa'=>'monwaaas',//*
                        'wqed'=>'D234',
                        'wqasee'=>'Esd',
                        'wqewf'=>'Ffds'
                        );
    
    $element_array = array('hi'=>'HI','hello'=>'HELLO');
    
    foreach($new_array as $key=>$value)
    {
            if($key == 'monwa' && $value =='monwaaas')
            {
                   foreach($element_array as $key1=>$value1)
                   {
                         $return_array[$key1] = $value1;
               }
            }
        else
        {
                   $return_array[$key] = $value;
        }
    }
    
    echo "<pre>";
    print_r($return_array);
    echo "<pre>";
    

        3
  •  -1
  •   Maulik Vora    14 年前

    你可以这样做。

    foreach($new_array as $key=>$value)
    {
           if($key == 'monwa' && $value =='monwaaas')
           {
                   foreach($element_array as $key1=>$value1)
                   {
                           $return_arrat[$key1] = $value1;
                   }
           }
           else
           {
                  $return_array[$key] = $value
           }
    }