根据第二个数组设置数组的顺序

时间:2013-01-28 14:36:38

标签: php arrays

我有一个数组如下:

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" 
  } 
}

我想要做的是根据以上内容订购第二个数组(这会改变用户选择):

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

编辑:用户访问有jQuery可排序列表的页面 - 他们按需订购它并将其保存到数据库中,我现在要做的是当用户返回页面时确保列表按照他们列出的顺序排列。所以这是他们设定的顺序。

第二个数组是填充.PHP页面上列表的数组,这就是我需要它来匹配第一个数组的原因。

我看过array_multisort,但没有快乐。

我假设在使用它之前我会用PHP做一些循环来填充第二个数组,但是我在努力 - 有什么建议吗?

2 个答案:

答案 0 :(得分: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
// )

答案 1 :(得分: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
)