Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP中的第二个元素按字母顺序对数组排序_Php_Arrays_Sorting_Explode - Fatal编程技术网

如何使用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

)