Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
I';我试图对一个PHP数组进行排序,但可以';我不知道怎么做_Php_Arrays_Sorting_Grouping_Multidimensional Array - Fatal编程技术网

I';我试图对一个PHP数组进行排序,但可以';我不知道怎么做

I';我试图对一个PHP数组进行排序,但可以';我不知道怎么做,php,arrays,sorting,grouping,multidimensional-array,Php,Arrays,Sorting,Grouping,Multidimensional Array,如何在PHP中转换如下所示的数组: Array ( [2] => B.eot [3] => B.ttf [4] => CarnevaleeFreakshow.ttf [5] => CarnevaleeFreakshow.eot [6] => TRASHED.ttf [7] => sub.ttf ) Array( [B]=>array(

如何在PHP中转换如下所示的数组:

Array ( 
      [2] => B.eot
      [3] => B.ttf
      [4] => CarnevaleeFreakshow.ttf
      [5] => CarnevaleeFreakshow.eot
      [6] => TRASHED.ttf
      [7] => sub.ttf
      ) 
Array(
     [B]=>array(
               [0] => B.eot
               [1] => B.ttf
               )
     [CarnevaleeFreakshow]=>array(
               [0] => CarnevaleeFreakshow.ttf
               [1] => CarnevaleeFreakshow.eot
               )
     [TRASHED]=>array(
               [0] => TRASHED.ttf
               )
     [sub]=>array(
               [0] => sub.ttf
               )
     )
看起来像这样:

Array ( 
      [2] => B.eot
      [3] => B.ttf
      [4] => CarnevaleeFreakshow.ttf
      [5] => CarnevaleeFreakshow.eot
      [6] => TRASHED.ttf
      [7] => sub.ttf
      ) 
Array(
     [B]=>array(
               [0] => B.eot
               [1] => B.ttf
               )
     [CarnevaleeFreakshow]=>array(
               [0] => CarnevaleeFreakshow.ttf
               [1] => CarnevaleeFreakshow.eot
               )
     [TRASHED]=>array(
               [0] => TRASHED.ttf
               )
     [sub]=>array(
               [0] => sub.ttf
               )
     )
做这种事有名字吗? 正在从数据库中检索数据

 scandir
数组。


做这种事有名字吗

没有。无论如何,使用循环应该相当简单:

<?php
$newArray = array( );

foreach( $originalArray as $fontfile ) {
    $newArray[basename( $font )][] = $fontfile;
}
echo '<pre>' . print_r( $newArray, true );

据我所知,没有“简单”的方法可以做到这一点。 您可以构建一个函数来处理它

function subdiv(array $arr) {
$res = array();
foreach($arr as $val) {
    $tmp = explode('.', $val);
    if(!isset($res[$tmp[0]]))
        $res[$tmp[0]] = array();
    $res[$tmp[0]][] = $val;
} return $res;
}
这应该符合您的要求。

试试:

$res = subdiv($array);
var_dump($res);
用于:

$ARRraw = array (
      "B.eot",
      "B.ttf",
      "CarnevaleeFreakshow.ttf",
      "CarnevaleeFreakshow.eot",
      "TRASHED.ttf",
      "sub.ttf"
      ) ;


$sorted = array();
foreach($ARRraw as $one){
  $firstPoint = strpos($one,".");
  // No point? then skip.
  if (!($firstPoint === false)){
    // Get the part before the point.
    $myKey = substr($one,0,$firstPoint);
    $sorted[$myKey][] = $one;
  }
}
这里有一个例子

它可以写得更短,但我认为这是最有启发性的


您不是在排序,而是在分组(然后可能会对组进行排序,尽管您的示例没有演示这一点),从何处获取数组的数据?使用多维数组。这是
scandir
的结果,只返回
文件。