$e = 'ray#b_spike#693393398#ddgwj#非洲美男';
$a = '你我#你好#兔子#猫#狗#等待';
请问怎么把$e里用#分隔的值随机分配给$a里的
希望得到结果:
ray:你我
b_spike:你好
693393398:兔子
ddgwj:猫
当$e里分隔的个数小于$a个数时,$e里的分配完后可以重复分配给$a
请直接给个代码可以吗,谢谢了
试一下以下代码:
$e = 'ray#b_spike#693393398#ddgwj#非洲美男';
$a = '你你#你好#兔子#猫#狗#等待';
$eArr = explode('#',$e);
var_dump($eArr);
echo "<br />";
$aArr = explode('#',$a);
var_dump($aArr);
echo "<br />";
$eNum = count($eArr);
$aNum = count($aArr);
$j = 0;
for($i=0;$i<$aNum;$i++){
if($i < $eNum){
echo $eArr[$i].':'.$aArr[$i].'<br>';
}else{
echo $eArr[$j].':'.$aArr[$i].'<br>';
$j++;
}
}
你这需求有个逻辑错误:
如果让 $e里分隔的个数小于$a个数,数组里变成有同个key,比如 ['ray' => '你我', ... ,'ray' => '等待'];这是不被允许的,会被替换掉
$e = 'ray#b_spike#693393398#ddgwj#非洲美男';
$a = '你我#你好#兔子#猫#狗#等待';
$e = explode("#", $e);
$a = explode("#", $a);
$length = count($e);
$res = array();
foreach($a as $k => $v) {
if($k < $length) {
$res[$e[$k]] = $v;
} else {
$res[$e[$k - $length]] = $v;
}
}
var_dump($res);