2011-01-05 15 views
0

私はstdオブジェクトの配列を持っています。配列キーを変更する

名前を変更したいと思います。

どうすればよいですか?

例:

Array( 
    [0] stdClass 
     key => values 
    [1] stdClass 
     key => values 
    [2] stdClass 
     key => values 
) 

はどのような値0、1、2、何か他のものに名前を変更するには? は、私が今

 
foreach ($arr as $value) { 
    $new_arr[] = array('my_key' => $value); 
} 

しかし、追加の配列の次元を犠牲にしてこれを使用してい ---

の下に更新

---。

この

 
Array(
    [0] stdClass 
     tid => 10 
     name => Category 
    [1] stdClass 
     tid => 11 
     name => Product 
) 

に...

 
Array(
    [10] stdClass 
     tid => 10 
     name => Category 
    [11] stdClass 
     tid => 11 
     name => Product 
) 
+0

あなたの質問を言い換えることができますか?キーを別のものに変更したいですか?実際の配列の実際の 'var_dump'とそれを変更したい例を表示できますか? –

+0

本当に私は鍵を意味しました。 – resting

答えて

2
$new_arr = array(); 
foreach ($array as $val) 
{ 
    $new_arr[(int)$val->tid] = $val; 
} 
+0

ええと、これと何が関係しているのですか、彼は配列インデックスを再マッピングしています。それはすべて鋳造とは関係ありません。 – RobertPitt

+0

は、2回目のアップレート前です – ajreal

1

このような何か多分

$mapping = array(
    0 => "object_0", 
    1 => "object_1", 
    2 => "object_2", 
    3 => "object_3", 
); 

foreach($my_array as $key => $value) 
{ 
    //Check to see if there's a key, else use integer 
    $_key = isset($mapping[$key]) ? $mapping[$key] : $key; 

    //Remove the old one | 0,1,2 ... $value already in scope, and not referenced. 
    unset($my_array[$key]); 

    //And key 0 to index object_0 etc 
    $my_array[$_key] = $value; 
} 

これがループあなたのすべての要素のようなものを変更しようとしていました配列とそれをマッピングaと照合するrrayキーが存在する場合は、正しいインデックスに値を追加し、古い整数ベースのインデックスを削除します。

また、これは範囲と参考文献では大丈夫です。