簡體   English   中英

在PHP數組中替換另外兩個元素

[英]Substitute in place an element with two other in a PHP array

摘要:給定一個數組

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

x的位置插入幾個元素{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_arr => new_array應該是

(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應該是:

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

等等...

誰知道怎么做?

謝謝

在線翻譯示例

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);
}

@Artefacto

我相信這將保持相同的立場。

$ return_array將作為$ new_array中的頭寸存檔。

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

請嘗試一次

你可以這樣做。

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
       }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM