2013-04-08 98 views
0

說的按鍵我有這些:更改數組

$services = array(); 
$services["services0"]; 
$services["services1"]; 
$services["services2"]; 
$services["services3"]; 

而且我想創造一些類型的循環將這些更改爲:

$services[0]; 
$services[1]; 
$services[2]; 
$services[3]; 

你將如何去這樣做?不知道數組中有多少個key:value對?

+1

是的,有兩種很好的方法...使用一個'for'或'foreach'循環。 – 2013-04-08 02:12:10

+0

我理解這兩個概念......但我在想,也許我首先得到數組元素的數量,然後創建循環從零開始,直到數組的長度。在該循環內創建一個foreach循環,進入每個'$ key'並用當前迭代代替... – hayonj 2013-04-08 02:15:10

+0

我確定必須更容易解決此問題! – hayonj 2013-04-08 02:16:06

回答

3

要做到這一點,並丟棄原來的鍵是隻通過array_values()運行陣列最簡單的方法:

$new_array = array_values($old_array); 

您可以從this demo看到下面的例子:

$services = array(); 
$services["services0"] = 's0'; 
$services["services1"] = 's1'; 
$services["services2"] = 's2'; 
$services["services3"] = 's3'; 

$services = array_values($services); 

print_r($services); 

生成此數組:

Array 
(
    [0] => s0 
    [1] => s1 
    [2] => s2 
    [3] => s3 
) 
+0

...除非它實際上沒有按鍵排序,你需要['ksort'](http://php.net/manual/en/function.ksort.php)。 – 2013-04-08 02:23:38

+0

令人驚歎!感謝這個驚人的一班,我從來沒有聽說過:)我喜歡Stackoverflow並與大家分享......我們每天都在學習新事物! – hayonj 2013-04-08 02:34:14

+0

只是一個註釋:它只*看起來*像鍵(即0-3)中的數字被保留。 – 2013-04-08 02:51:08

0

嘗試類似下面的代碼:

$dummy_array = $services; 
$services = array(); 
foreach($dummy_array as $service) { 
    $services[] = $service; 

} 

這裏發生的事情是,你是不落的服務(但先保存它),然後你遍歷你保存的版本增加值回一個數組。該行$services[] = $service;是關鍵。這通過一個標準鍵將值附加到現有數組的末尾。即0,1,2,3等等。這將創建您想要刪除字符串鍵並將其替換爲標準數組鍵重要性的結果。試試看看你得到了什麼。祝你好運

+1

非常酷,我會考慮到這一點,我想感謝你的貢獻,你的代碼是簡潔明快,並做什麼預期,但上面的代碼是一個班輪,也是一個整潔的小功能,我從未見過,所以點出去給他,但我也喜歡你的功能 – hayonj 2013-04-08 02:32:50

+0

@hayonj沒問題。我在工作中使用了數組[]語法。它適用於其他類型的問題,因此它是您的套件中的一個好工具。我不確定爲什麼其他人會投票選擇有效的解決方案。奇怪的地方,這是我猜... – usumoio 2013-04-08 02:37:34

+1

你的答案是一樣有效的上面我希望我可以幫你不要投下。我不知道如何着手,但你的代碼的工作,不應該被否決,如果你發現我的回答是有用的,選票經常幫助可能是使用了比我需要它 – hayonj 2013-04-08 02:59:12