php数组推送启动并保持密钥

时间:2014-07-17 17:38:58

标签: php arrays

我有这个数组:

array (size=263)
  0 => string 'abend' (length=5)
  1 => string 'andorra' (length=7)
  2 => string 'united_arab_emirates' (length=20)
  3 => string 'afghanistan' (length=11)
  4 => string 'antigua_and_barbuda' (length=19)
  5 => string 'anguilla' (length=8)
  6 => string 'albania' (length=7)
  7 => string 'armenia' (length=7)
  8 => string 'netherlands_antilles' (length=20)
  9 => string 'angola' (length=6)
  10 => string 'antarctica' (length=10)
  11 => string 'american_samoa' (length=14)
  12 => string 'austria' (length=7)
  13 => string 'australia' (length=9)
  14 => string 'aruba' (length=5)
  15 => string 'azerbaijan' (length=10)
  16 => string 'bosnia_and_herzegovina' (length=22)
  17 => string 'barbados' (length=8)
  18 => string 'bangladesh' (length=10)
  19 => string 'belgium' (length=7)
  20 => string 'burkina_faso' (length=12)
  ...

这是以后转换为下拉列表的国家/地区列表... 现在我有用户所在国家/地区,我想从列表中删除他的国家/地区 但 将它添加到开头,所以它将是第一个。

示例:

假设用户所在国家/地区为“belgium”,因此其ID为19。 所以新数组应该是:

array (size=263)
  19 => string 'My country' (length=5)
  0 => string 'abend' (length=5)
  1 => string 'andorra' (length=7)
  2 => string 'united_arab_emirates' (length=20)
  3 => string 'afghanistan' (length=11)
  4 => string 'antigua_and_barbuda' (length=19)
  5 => string 'anguilla' (length=8)
  6 => string 'albania' (length=7)
  7 => string 'armenia' (length=7)
  8 => string 'netherlands_antilles' (length=20)
  9 => string 'angola' (length=6)
  10 => string 'antarctica' (length=10)
  11 => string 'american_samoa' (length=14)
  12 => string 'austria' (length=7)
  13 => string 'australia' (length=9)
  14 => string 'aruba' (length=5)
  15 => string 'azerbaijan' (length=10)
  16 => string 'bosnia_and_herzegovina' (length=22)
  17 => string 'barbados' (length=8)
  18 => string 'bangladesh' (length=10)
  20 => string 'burkina_faso' (length=12)
  ...

正如你所看到的那样,比利时已从阵列中删除,“我的国家”被添加到顶部。

任何想法如何实现?

2 个答案:

答案 0 :(得分:1)

试试这个

因为你知道用户国家从初始数组中取消设置它,同时将用户所在国家保留在另一个数组中,然后你可以将它组合起来形成新数组。

$first = array(1 => brazil, 2 => china, 3 => germany);
$second = array(3 => germany);
unset($ss[3]);
$combine = $first + $second;
print_r($combine);

结果:

阵 (     [3] =>德国     [1] =>巴西     [2] =>中国 )

答案 1 :(得分:0)

为了实现这一点,你需要一个数组上的集合接口或php中的真正集合。我建议检查一下 collection classes in php - sitepoint