20

私の配列は次のようになります。

$arValues = array( 345 => "jhdrfr", 534 => "jhdrffr", 673 => "jhrffr", 234 => "jfrhfr" );

配列の最初の要素を削除し、数値キーを保持するにはどうすればよいですか? 以来array_shift、私の整数キー値を に変更し0, 1, 2, ...ます。

unset( $arValues[ $first ] ); reset( $arValues );2 番目の要素 (現在は最初) を引き続き使用するために を使用しようとしましたが、 が返されますfalse

どうすればこれを達成できますか?

4

6 に答える 6

20
reset( $a );
unset( $a[ key($a)]);

もう少し便利なバージョン:

// rewinds array's internal pointer to the first element
// and returns the value of the first array element. 
$value = reset( $a );

// returns the index element of the current array position
$key   = key( $a );

unset( $a[ $key ]);

機能:

// returns value
function array_shift_assoc( &$arr ){
  $val = reset( $arr );
  unset( $arr[ key( $arr ) ] );
  return $val; 
}

// returns [ key, value ]
function array_shift_assoc_kv( &$arr ){
  $val = reset( $arr );
  $key = key( $arr );
  $ret = array( $key => $val );
  unset( $arr[ $key ] );
  return $ret; 
}
于 2013-09-30T17:12:45.633 に答える
0

私のソリューションは @PhilF のものに似ていますが、古いバージョンの PHP と互換性があります。PHP 7.3よりも古いバージョンの PHP と互換性のあるコードを記述する必要があるまれな例です。

次のようになっている場合$myArray:

[
  345 => "jhdrfr",
  534 => "jhdrffr",
  673 => "jhrffr",
  234 => "jfrhfr"
]

次にarray_keys($myArray)、次のようになります。

[
  345,
  534,
  673,
  234
]

となり、次のarray_keys($myArray)[0]ようになります。

345

したがって:

unset($myArray[array_keys($myArray)[0]]);

keys をリセットせずに最初の要素を削除すると、次の結果が得られます。

[
  534 => "jhdrffr",
  673 => "jhrffr",
  234 => "jfrhfr"
]
于 2021-12-28T23:33:40.603 に答える