如何使用PHP中的第二个元素按字母顺序对数组排序
非常感谢您的帮助。:) 我有以下文本文件:如何使用PHP中的第二个元素按字母顺序对数组排序,php,arrays,sorting,explode,Php,Arrays,Sorting,Explode,非常感谢您的帮助。:) 我有以下文本文件: roomA Springer, Jerry js@email.com roomB Cruise, Tom tc@email.com roomC Jovi, Bon bj@email.com 我想按姓氏对其进行排序,以便输出: Cruise, Tom roomB tc@email.com Jovi, Bon roomC bj@email.c
roomA Springer, Jerry js@email.com
roomB Cruise, Tom tc@email.com
roomC Jovi, Bon bj@email.com
我想按姓氏对其进行排序,以便输出:
Cruise, Tom roomB tc@email.com
Jovi, Bon roomC bj@email.com
Springer, Jerry roomA js@email.com
我知道如何加载文件:
$a = file("details.txt");
我想我必须使用explode()来分割数据(制表符分开):
这使名称成为数组中的第二个元素
我如何将字符串重新组合在一起,首先是名称,然后是房间和电子邮件?
谢谢。执行var\u dump($array)
,它将显示索引。然后,您只需要交换两个元素。这里有一个技巧:
list($array[0], $array[1]) = array($array[1], $array[0]);
在此之后,您可以按所做的那样对结果进行分解:
$line = implode("\t", $array);
希望这是有帮助的。啊,好吧,至于排序,请看一看。PHP不是这项工作的最佳工具
awk -F"\t" '{print $2"\t"$1"\t"$3}' infile | sort > outfile
您的数据不是我知道的已知格式。。它们之间的
选项卡
和空格
不是常数
*请勿在生产中使用。。我不得不绕道而行*
试一试
建议
使用标准格式suvh,如csv
、json
或xml
我会尝试通过预赛来提高它
awk -F"\t" '{print $2"\t"$1"\t"$3}' infile | sort > outfile
$note = "roomA Springer, Jerry js@email.com
roomB Cruise, Tom tc@email.com
roomC Jovi, Bon bj@email.com";
$data = array();
$info = explode("\n", $note);
echo"<pre>" ;
foreach($info as $line)
{
$words = preg_split("/\\s/", $line);
$words = array_filter($words); // remove spaces
$words = array_values($words); // To reset the keys
$data[$words[1] . $words[2]] = $words[1] . $words[2] ."\t" . trim($words[0]) . "\t" . trim($words[3]) . "\n";
}
asort($data); //Sorting the data ;
print_r(array_values($data));
Array
(
[0] => Cruise,Tom roomB tc@email.com
[1] => Jovi,Bon roomC bj@email.com
[2] => Springer,Jerry roomA js@email.com
)