0

次のような配列があります。

array(1) { 
    [0]=> string(1) "2" 
    [1]=> string(1) "1" 
    [2]=> string(1) "3"  
    [3]=> string(1) "4" 
    [4]=> string(1) "5" 
    [5]=> string(1) "6" 
    [6]=> string(1) "7" 
  } 
}

私がやりたいことは、上記に基づいて2番目の配列を注文することです(これはユーザーの選択によって変わります):

Array {
   "Two" => "Two",
   "One" => "One",
   "Three" => "Three",
   "Four" => "Four",
   "Five" => "Five",
   "Six" => "Six"
   "Seven" => "Seven"     
}

編集: ユーザーは、jQuery の並べ替え可能なリストがあるページにアクセスします - 彼らはそれを好きなように注文し、これは DB に保存されます。私が今やろうとしているのは、ユーザーがページに戻ったときにリストは設定された順序です。それで、それは彼らが設定した順序です。

2 番目の配列は、.PHP ページのリストに入力する配列です。そのため、最初の配列と一致させる必要があります。

私は見ましarray_multisortたが、喜びはありません。

PHP でループを実行して、使用する前に 2 番目の配列にデータを入力すると仮定していますが、苦労しています - 何か提案はありますか?

4

2 に答える 2

1

array_combineはあなたが探しているものだと思います:

$indexes = array('2','1');
$indexes = array_merge($indexes, range(3,7)); // used range to fill missing indexes
$values = array('two', 'one', 'three', 'four', 'five', 'six', 'seven');
$result=array_combine($indexes, $values);

ksort($result); // sort by keys

print_r($result);
// Array
// (
//   [1] => one
//   [2] => two
//   [3] => three
//   [4] => four
//   [5] => five
//   [6] => six
//   [7] => seven
// )
于 2013-01-28T15:34:24.490 に答える
0

私はあなたの目標を完全には理解していませんが、次のコードはあなたの望む結果を生み出すと思います

$data = array("two", "one", "three", "seven");
$result = array();
foreach ( $data as $item) {
    $result[$item] = $item;
}

print_r($result);

これは出力されます

Array
(
  [two] => two
  [one] => one
  [three] => three
  [seven] => seven
)
于 2013-01-28T15:03:37.273 に答える