我将在选择菜单中使用一系列国家/地区:
array(
[0] => " -- Select -- "
[1] => "Afghanistan"
[3] => "Albania"
[4] => "Algeria"
[39] => "Canada"
[47] => "USA"
)
//etc...
我想要复制加拿大和美国条目的创建副本,并将它们放在我的阵列的前面。所以数组应该看起来像这样:
array(
[0] => " -- Select -- "
[47] => "USA"
[39] => "Canada"
[1] => "Afghanistan"
[3] => "Albania"
[4] => "Algeria"
[39] => "Canada"
[47] => "USA"
)
//etc...
数组键对应于数据库中的ID,因此无法更改键。我怎样才能做到这一点?
我意识到这是不可能的。当您尝试使用重复键在数组中设置值时,它会覆盖第一个键。我想出了一个不同的解决方案,但已经接受了最高级别的答案。
答案 0 :(得分:5)
而不是使用一维数组作为id =>值,您可以使用二维数组,例如
$countries = array(
0 => array(
'country_id' => 47,
'country' => 'USA'
),
1 => array(
'country_id' => 39,
'country' => 'Canada'
),
2 => array(
'country_id' => 1,
'country' => 'Afghanistan'
),
......
);
答案 1 :(得分:1)
您可以在html中手动添加它们。您可以复制并粘贴循环,将其发送给2元素数组。您可以将循环转换为函数并使用2元素数组调用它,然后使用较长的数组调用它。你可以生成数组为[0..inf] =>数组($ key,$ value)然后使用list($ key,$ val)= $ arr [x]获取键值,使您能够手动添加USA和canada而不会出现问题。
答案 2 :(得分:1)
出于可用性的考虑,在选择菜单中两次列出国家真的不太好。这有点令人困惑。
但是如果你有心脏,为什么不用这个循环关联数组:
$top_countries = array(
[0] = "USA";
[1] = "Canada";
)
然后
foreach($top_countries as $top_of_list) {
foreach($list_of_countries as $this_country) {
if($this_country == $top_of_list) {
$stored_string .= // Select HTML formatting with $this_country;
}
}
}
// Pointer reset and rest of the code
// to add rest of the countries.
答案 3 :(得分:1)
由于您明确需要重复项,因此您可以使用数组而不是关联数组。
array(
[0] => " -- Select -- "
[1] => array(name: "Afghanistan", code: 1)
[2] => "array(name: Albania", code: 3)
)
等等,或者可以创建一个Country
对象,并有一个数组。
class Country {
public $name;
public $code;
..
}
$countries[] = new Country('USA', 47);
$countries[] = new Country('Canada', 39);
$countries[] = new Country('Afghanistan', 1);
...