15

配列キーのプレフィックスを削除しようとしましたが、すべての試みが失敗しています。私が達成したいことは次のとおりです。

持つ:Array ( [attr_Size] => 3 [attr_Colour] => 7 )

取得するため:Array ( [Size] => 3 [Colour] => 7 )

あなたの助けは大歓迎です...

4

3 に答える 3

4

私があなたの質問を理解していれば、あなたがimplode()望むものを得るために使う必要はありません。

define(PREFIX, 'attr_');

$array = array('attr_Size' => 3, 'attr_Colour' => 7);

$prefixLength = strlen(PREFIX);

foreach($array as $key => $value)
{
  if (substr($key, 0, $prefixLength) === PREFIX)
  {
    $newKey = substr($key, $prefixLength);
    $array[$newKey] = $value;
    unset($array[$key]);
  }
}

print_r($array); // shows: Array ( [Size] => 3 [Colour] => 7 ) 
于 2011-12-23T09:47:28.153 に答える
3

Array ( [Size] => 3 [Colour] => 7 )取得方法の1 つ:Having: Array ( [attr_Size] => 3 [attr_Colour] => 7 )

$new_arr = array();
foreach($Your_arr as $key => $value) {

list($dummy, $newkey) = explode('_', $key);
$new_arr[$newkey] = $value;

}

キーに複数のアンダースコアがあると思われる場合は、foreach 内の最初の行を次のように置き換えます。 list($dummy, $newkey) = explode('attr_', $key);

于 2011-12-23T09:43:58.130 に答える