2013-09-02 3 views
15

私はPHPの配列配列の最初の要素をキー値を変更せずに削除するにはどうすればよいですか?

<?php 
$array=array("a"=>"123","b"=>"234","c"=>"345"); 
array_shift($array); 
//array("0"=>"234","1"=>"345"); 
?> 

私はこの機能を使用する場合は、キー値が変更されますがあります。私は私のキーバリューを変わらないままにしたい。配列のキー値に影響を与えずに最初の要素を削除するにはどうすればよいですか? 私の答えは

array("b"=>"234","c"=>"345"); 

ノートのようにする必要があります:foreachのを使用しないでください();私はこれを既存の配列関数phpで

上記の配列のために働いています。しかし、次のように答えを示している以下の配列

<?php 
$array = Array 
(
    '39' => Array 
     (
      'id' => '39', 
      'field_id' => '620' 

     ), 

    '40' => Array 
     (
      'id' => '40', 
      'field_id' => '620', 
      'default_value' => 'rrr', 

)); 

array_splice($array, 0, 1); 
print_r($array); 
?> 

を考慮してください。

Array ([0] => Array ([id] => 40 [field_id] => 620 [default_value] => rrr)) 

は、私はその理由を知っているかもしれません? array_splice()は1次元配列に対してのみ動作しますか?今すぐキー値がリセットされます...

+0

キーに関係なく最初の要素を削除するか、または要素を削除しますかキー= "a"のNT? – Barmar

+0

@ガネーシュ:あなたはあなたの質問に間違った例を挙げます。この例を使って説明するものは間違っています(あなたはまだ何かを意味していますが)。 – hakre

+0

[配列から要素を削除する]の複製が可能です(http://stackoverflow.com/questions/369602/delete-an-element-from-an-array) – hakre

答えて

27

キーの値..

+1

与えられた例では、配列をリセットする必要はありません(ただし、単に 'array_shift'を使うこともできますので... :)) – hakre

+0

例は単なる例に過ぎません。誰が配列を作成し、即座に最初のメンバーを削除するのですか?配列が処理されると、内部ポインタがどこにあるのかわからないことがあります。 – aefxx

+0

はい、できます。それはかなり予測可能です。しかし、それは@Ganeshが実際に彼が学びたいものとまったく無関係に近い例を与えているかもしれません:) – hakre

5
$array=array("a"=>"123","b"=>"234","c"=>"345"); 
unset($array["a"]) ; 
var_dump($array) ; 

また、どのバージョンのPHPを使用していますか?

array_shiftは、文字列インデックス配列で私にとってうまく動作し、期待される結果が得られます。

// Make sure to reset the array's current index 
reset($array); 

$key = key($array); 
unset($array[$key]); 
+0

array_shiftは配列キーの値をリセットします... –

+2

@Ganesh:例ではありません***あなたは***を与えました。 – hakre

0
<?php function array_kshift(&$array) 
{ 
list($k) = array_keys($array); 
$r = array($k=>$array[$k]); 
unset($array[$k]); 
return $r; 
} 

// test it on a simple associative array 
$array=array("a"=>"123","b"=>"234","c"=>"345"); 

array_kshift($array); 
print_r($array); 
?> 
+0

あなたの答えをありがとう。私は –

1

次のようにこの質問のためのソリューションです:

<?php 

unset($array[current(array_keys($array))]); 

?> 

それは影響を与えずに、最初の要素を取り除き、あなたが最初の項目のkeyが何であるかを知らない場合には

+2

'$ array [current(array_keys($ array))]'を解決するためにこの質問の回答を追加しました。より良い方法は '$ array [key($ array)]'です。 – spex

関連する問題