0

キーに基づいて、目的の順序で配列を並べ替える/並べ替える PHP 関数を作成するにはどうすればよいですか?

配列には文字列または数値が含まれます。たとえば、私は、

array = A,B,C,D,E,F

キーに基づいて配列を変更したいので、作成します

create_array_index(5,2,4,1,3,0)表示されます 表示array F,C,E,B,D,A create_array_index(0,2,4,1,3,5)されますarray A,C,E,B,D,F

私は知っています、私は手動で値にアクセスできますex:$array[5],$array[2],...などですが、それには多くの時間がかかります、これのための機能はありますか

ありがとう

4

4 に答える 4

1

いくつかの php ソート関数を使用する方法はほとんどありません (他の人が既に提案したように)。これは、この仕事を行う別の簡単な方法です。

関数 sortArrayByKeys()

function sortArrayByKey($keystring, $origarray) {
  $res = array();
  $keys = explode(',', $keystring);
  foreach ($keys as $key) $res[] = $origarray[$key];
  return $res;
  }

テスト:

$original_array = array('A', 'B', 'C', 'D', 'E', 'F');

$sort_pattern = '5,2,4,1,3,0';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array) . "<br />\n";

$sort_pattern = '0,2,4,1,3,5';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array) . "<br />\n";

$sort_pattern = '5,4,3,2,1,0';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array) . "<br />\n";

$sort_pattern = '0,5,4,2,1,3';
$new_array = sortArrayByKey($sort_pattern, $original_array);
echo "$sort_pattern => " . join(',', $new_array);

出力:

5,2,4,1,3,0 => F,C,E,B,D,A
0,2,4,1,3,5 => A,C,E,B,D,F
5,4,3,2,1,0 => F,E,D,C,B,A
0,5,4,2,1,3 => A,F,E,C,B,D

乾杯 ;)

于 2012-10-09T06:45:16.407 に答える
1

キーによるソートを使用する場合は、関数ksort()が最適です。

于 2012-10-09T05:45:42.440 に答える
0

PHP で利用可能なさまざまな並べ替えオプションを確認してください。

配列キーに基づくソート - http://us3.php.net/ksort

独自の比較関数に基づいて並べ替えることもできます - http://us3.php.net/manual/en/function.uksort.php

于 2012-10-09T05:46:28.093 に答える