为了账号安全,请及时绑定邮箱和手机立即绑定

想做成这样的数组:1=>A,5=>B,6=>C 就这个意思!

想做成这样的数组:1=>A,5=>B,6=>C 就这个意思!

PHP
慕仙森 2023-01-08 15:11:19

1@A|||5@B|||6@C|||4@D|||2@E|||3@F|||7@G|||8@H||| 这是源字符串:

查看完整描述

2 回答

?
幕布斯6054654

TA贡献1620条经验 获得超7个赞

<?php
$str = '1@A|||5@B|||6@C|||4@D|||2@E|||3@F|||7@G|||8@H|||';

##---------正则表达式方法
//这是你要的结果数组
$result = array();
preg_match_all('/(\d+)@(\w+)/', $str, $matchs);
#print_r($matchs);//你能明白$matchs是什么东西
foreach ($matchs[0] as $i=>$tmp){
//$matchs[1][$i] 就是1 $matchs[2][$i] 就是A
$result[$matchs[1][$i]] = $matchs[2][$i];
}

print_r($result);

unset($result);
#--------字符串方法
#以|||分割成1@A
$ps = split("\|\|\|", $str);
#var_dump($matchs);
foreach ($ps as $s){
//以@分割1@A=> 1, A
if(!$s){
continue;
}
list($num, $word) = split("@", $s);
$result[$num] = $word;
}
print_r($result);


查看完整回答
反对 回复 2023-01-10
?
RISEBY

TA贡献1616条经验 获得超5个赞

|||为分割符,
explode — 使用一个字符串分割另一个字符串
说明
array explode ( string $separator , string $string [, int $limit ] )
此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。如果设置了 limit 参数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。
用这个得到个函数
在循环函数 
在循环体里面 
用split(search,$str[,int]):把$str按search字符进行分割返回数组int是分割几
或者
strtok(原字符,分割符):每次分割一小块,它根据分割符的每个字符来分割;
分割每个数组元素 得到一个新的数组 
在定义一个数组,把的到的新的数组的2个元素分别赋给定义数组的键值,和值
$a=explode("1@A|||5@B|||6@C|||4@D|||2@E|||3@F|||7@G|||8@H|||","|||");
foreach($a as $value){
$b=explode($value,"@");
$c[$b[0]]=$b[1];
}

行了
我可能写的不对 ,但是思路是这样的,你自己想想

查看完整回答
反对 回复 2023-01-10

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信