嗨我有一個數組,我需要有序地更改鍵,但不要更改值的順序。例如php數組重新填充鍵
$a = array (
0=>'h',
1=>'blabla',
2=>'yes'
);
我用
unset($a[1]);
,但我需要的鍵重新啓動計算鍵 0,1,2 ...... etccc 所以我不結了:
array(
0 => 'h',
2 => 'yes'
)
但它應該會返回:
array(
0 => 'h',
1 => 'yes'
)
嗨我有一個數組,我需要有序地更改鍵,但不要更改值的順序。例如php數組重新填充鍵
$a = array (
0=>'h',
1=>'blabla',
2=>'yes'
);
我用
unset($a[1]);
,但我需要的鍵重新啓動計算鍵 0,1,2 ...... etccc 所以我不結了:
array(
0 => 'h',
2 => 'yes'
)
但它應該會返回:
array(
0 => 'h',
1 => 'yes'
)
就可以呼叫array_values
:
$a = array (
0=>'h',
1=>'blabla',
2=>'yes'
);
unset($a[1]);
$a = array_values($a);
var_dump($a);
/*
array(2) {
[0]=>
string(1) "h"
[1]=>
string(3) "yes"
}
*/
您需要在陣列上應用array_values以重新編制索引。
$a = array_values($a);
獎勵:如果您還需要訂購你的價值觀,你可以使用sort,它也將重新索引您的陣列。
注:通過使用任何array_values或排序,你將失去你可能有的任何字符串鍵。
您還可以使用array_splice()而不是取消設置(),它會自動重新索引數組元素:
$a = array (
0=>'h',
1=>'blabla',
2=>'yes'
);
array_splice($a,1,1);
var_dump($a);
但是,這是一個有點矯枉過正。還有一些其他功能會這樣做。例如array_merge(爲他的情況)。 – 2010-11-08 13:00:49
與unset()之後立即執行array_values()相比,它確實是過度殺毒嗎? – 2010-11-08 13:02:17
假設他想要消除一個元素,我猜它可能會快一點array_splice,但我沒有認真的證據。另外PHP並不完全是速度應該是優先考慮的語言:)。我會給你一個+1組合解決方案來解除和重新索引。 – 2010-11-08 13:05:26