首页 > 解决方案 > 如何在多维数组中连接 2 个字符串?

问题描述

我有一个多维数组。我想分别为 2 个数组值连接 2 个字符串,并且不应为单个值连接 2 个字符串。我希望 CM 和 PM 在阵列中的任何位置连接 2 次。我试过循环数组并生成array_rand,但我只生成一次。任何帮助深表感谢。以下是正在实现的一个示例。

我想要达到的目标

例如:我有下面的多维数组。

Array
(
    [0] => Array
        (
            [0] => Name-A
            [1] => Name-B
            [2] => Name-C
            [3] => Name-4
            [4] => Name-5
        )

    [1] => Array
        (
            [0] => Name-A
            [1] => Name-B
            [2] => Name-C
            [3] => Name-4
            [4] => Name-5
        )

    [2] => Array
        (
            [0] => Name-A
            [1] => Name-B
            [2] => Name-C
            [3] => Name-4
            [4] => Name-5
        )

    [3] => Array
        (
            [0] => Name-A
            [1] => Name-B
            [2] => Name-C
            [3] => Name-4
            [4] => Name-5
        )

    [4] => Array
        (
            [0] => Name-A
            [1] => Name-B
            [2] => Name-C
            [3] => Name-4
            [4] => Name-5
        )
)

拼接后

Array
(
    [0] => Array
        (
            [0] => Name-A
            [1] => Name-B
            [2] => Name-C["PM"]
            [3] => Name-4["CM"]
            [4] => Name-5
        )

    [1] => Array
        (
            [0] => Name-A
            [1] => Name-B["PM"]
            [2] => Name-C
            [3] => Name-4["CM"]
            [4] => Name-5
        )

    [2] => Array
        (
            [0] => Name-A["PM"]
            [1] => Name-B
            [2] => Name-C
            [3] => Name-4
            [4] => Name-5["CM"]
        )

    [3] => Array
        (
            [0] => Name-A["PM"]
            [1] => Name-B["CM"]
            [2] => Name-C
            [3] => Name-4
            [4] => Name-5
        )

    [4] => Array
        (
            [0] => Name-A
            [1] => Name-B
            [2] => Name-C["CM"]
            [3] => Name-4
            [4] => Name-5["PM"]
        )
)

标签: phparrays

解决方案


抱歉我一开始没看懂。给定 $your_array:

// Generate an array where the names are the key, and assign a zero value to PM (0) and CM (1) in a sub array
$ar = array_fill_keys($your_array[0], array (0 => 0, 1 => 0));

//$array the sub_value, $add the case PM ou CM, $exclusion is the key used the first time
function rand_in_array($array, $add, $ar, $exclusion)
{   
    // Select a random key
    $arr_key = array_rand($array, 1);

    
    if($ar[$array[$arr_key]][$add] < 2 && ($arr_key !=  $exclusion))
    {
        return $arr_key;
    } 
    return rand_in_array($array, $add, $ar, $exclusion);    
}

for($i=0; $i<count($your_array);$i++) 
{
    
    $arr_key_pm = rand_in_array($your_array[$i], 0, $ar, 99);
    $ar[$your_array[$i][$arr_key_pm]][0]++;     
    $arr_key_cm = rand_in_array($your_array[$i], 1, $ar, $arr_key_pm);
    $ar[$your_array[$i][$arr_key_cm]][1]++;     

    $your_array[$i][$arr_key_pm] .= "PM";
    $your_array[$i][$arr_key_cm] .= "CM";
}

它很丑陋,但它有效:) 应该存在某个地方能够使人更美观..


推荐阅读