2017-11-03 10 views
-1

の交換 - フィギュア、私はどのように行うことができるように私はこの次の配列を持つ配列のキーに

$arr = [ 'demo-key1' => 'demoval1', 'demo-key2' => 'demoval2' ]; 

を、私はし_置き換えたいですか?

私はできなかったため、これについてStack Overflowでいくつかの例を試しました。

本当にありがとうございました。ここで

+1

可能な複製(https://stackoverflow.com/questions/ 9605143/how-to-rename-array-keys-in-php)または[多次元配列のPHPリネーム・アレイ・キー](https://stackoverflow.com/questions/2212948/php-rename-array-keys-in-multidimensional -array)OR [...](https://stackoverflow.com/search?q=%5Bphp%5D+rename+array+key) – Sean

+0

@Sean何も機能しません。 – Jeremy

+1

あなたが試したことを示してください。私たちはあなたのために仕事をするのではなく、あなたを導くのを助けるためにここにいます。 – Sean

答えて

0

はあなたを助けるかもしれない例です。

$arr=["demo0"=>"100","demo1"=>["demo_key1"=>"demoval1","demo_key2"=>"demoval2"],"demo3"=> "false"]; 

function changeKeys($array){ 
    $newArray=[]; 
    foreach($array as $key=>$val){ 
    $newKey=str_replace('_','-',$key); 
    if(is_array($val)){ 
     $newArray[$newKey]=changeKeys($val); 
    }else{ 
     $newArray[$newKey]=$val; 
    } 
    } 
    return $newArray; 
} 
$arr=changeKeys($arr); 

print_r($arr); 

は出力:

$arr = array_combine(str_replace('_', '-', array_keys($arr)), array_values($arr)); 

Array 
(
    [demo0] => 100 
    [demo1] => Array 
     (
      [demo-key1] => demoval1 
      [demo-key2] => demoval2 
     ) 

    [demo3] => false 
) 
+0

これは動作していますが、私は既存の配列で編集するために関数を使用できません。 – Jeremy

+0

正確に動作しないのは何ですか? –

+0

Iは直接にそれを更新する必要が '[demo0] => 100 [DEMO1] =>配列 ( [demo_key1] => demoval1 [demo_key2] => demoval2 ) [demo3] => false'のメインアレイ。 – Jeremy

0

あなたは一つの式でarray_keysstr_replacearray_valuesarray_combineを使用することができますインプレースリプレースメントが必要な場合あなたは配列への参照を持っているので、NT、多分、あなたはこのようにそれを行うことができます[?PHPで配列のキーの名前を変更する方法]の

function cleanArrayKeys(&$arr) { // use a reference 
    $arr = array_combine(str_replace('_', '-', array_keys($arr)), array_values($arr)); 
} 

$arr = [ 'demo_key1' => 'demoval1', 'demo_key2' => 'demoval2' ]; 
cleanArrayKeys($arr); 

print_r($arr); // same array reference now has the updated keys 
+0

は '[demo0] => 100 [DEMO1] =>アレイ ( [demo_key1] => demoval1 [demo_key2] => demoval2 ) [demo3] =>、ご回答いただきありがとうございます、それを試してみてくださいfalse'私はメイン配列で直接更新する必要があります。あなたはこれに関して何をお勧めしますか? – Jeremy

+0

キーは更新できません。置き換えられません。キーを置き換える(つまり、削除+再作成する)と、配列全体を再割り当てすることもできます。しかし、あなたはすでに答えを受け入れているので、あなたは大丈夫だと思います。 – trincot

+0

このような更新はできませんか?'foreach($ arr as&$ value){ if($ value == 1){ $ value = 2; } } – Jeremy

関連する問題