2013-11-01 83 views
-1

我正在研究我的一個項目,並且有一個基於硬件的組件,它發送回我收集並通過該數組創建的數據。一種功能是比較一個陣列和另一個陣列中的數據。我遇到過的一件麻煩的事情是,它似乎總是在數組的索引中放置一個值,因爲它是如何循環的。我的問題是,該數組中的值0 and 1沒有任何內容。它們被抵消。我如何將索引2中的值移動到索引0或者更加動態的方式;把它放在第一個可用的插槽。移位數組 - PHP

感謝您的寶貴意見和建議。

編輯:

Array ([2] => 0x0000000000000000004004490529) - 這是使用的print_r()輸出

UPDATE:

這裏是的輸出是什麼,因爲它通過陣列迭代:

Notice: Undefined offset: 0 in daemon.php on line 259 

Notice: Undefined offset: 1 in daemon.php on line 259 
+0

TLDR;你的代碼在哪裏? –

+1

[array_shift](http://php.net/array_shift)? – kero

+0

一些代碼或樣例輸出將很容易爲您提供幫助 –

回答

2
$array = array_merge($array); 

這將重新編制您的數組從0

$array = array(2 => 'foo'); // your starting point 
$array = array_merge($array); 
var_dump($array); 
// array(1) { [0]=> string(3) "foo" } 

或者,如果你只有一個鍵,它總是在指數2,你也可以做到這一點的簡單方法:

$array = array(2 => 'foo'); // your starting point 
$array[0] = $array[2]; 
unset($array[2]); 
+0

但值不會總是在索引2,它只是取決於數據庫中有多少字段,所以我如何動態設置? –

+1

@DavidBiga array_merge不依賴於它在鍵2中。無論鍵是什麼,它總是會重新索引0。 – Lepidosteus

+0

它工作得很好,我可能應該尋找這樣的東西。再次感謝,你得到的觀點:) –

2

您可以通過使用array_values所有鍵復位:

$array = array_values($array); 

實施例:

<?php 
    $array = array(
     0 => 'baz', 
     2 => 'foo', 
     4 => 'bar' 
    ); 

    $array = array_values($array); 

    print_r($array); 
    /* 
     Array 
     (
      [0] => baz 
      [1] => foo 
      [2] => bar 
     ) 
    */ 
?> 

DEMO

本質array_values做什麼(如果一個人重新編碼在PHP)是這樣的:

function array_values($array) { 
    $return = array(); 

    foreach ($array as $value) { 
     $return[] = $value; 
    } 

    return $return; 
}