php - 如何在多维数组中连接 2 个字符串?
问题描述
我有一个多维数组。我想分别为 2 个数组值连接 2 个字符串,并且不应为单个值连接 2 个字符串。我希望 CM 和 PM 在阵列中的任何位置连接 2 次。我试过循环数组并生成array_rand
,但我只生成一次。任何帮助深表感谢。以下是正在实现的一个示例。
我想要达到的目标
- 将“PM”和“CM”字符串连接到一组数组中,相同的值不能是CM和PM
- 每个阵列都应连接 PM 和 CM
- 1“名称”值应具有最小 1 CM 和 PM 和最大 2 CM 和 PM
例如:我有下面的多维数组。
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"]
)
)
解决方案
抱歉我一开始没看懂。给定 $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";
}
它很丑陋,但它有效:) 应该存在某个地方能够使人更美观..
推荐阅读
- css - 如何使抽屉占据屏幕的全高?
- kubernetes - 使用 cluster-admin 角色创建新的 CRD 资源
- http - 如果传输的数据多于 Content-Length(到客户端),会发生什么情况?
- php - 如何将具有整数的数组拆分为不同的格式
- python-3.x - 如何在可以随机选择的范围之外添加一个数字
- python - 从csv数据集中获取对应于一行的值
- javascript - Javascript数组到字符串的转换
- python - 我的电子邮件机器人不发送任何电子邮件并给出此错误?
- syntax - 在 julia 中查找数组的列数
- pine-script - 如何用实线绘制linebr?