2011-01-11 61 views
0

我有以下代碼:PHP數組鍵問題

$rt1 = array 
(
    'some_value1' => 'xyz1', 
    'some_value2' => 'xyz2', 
    'value_1#30'=>array('0'=>1), 
    'value_2#30'=>array('0'=>2), 
    'value_3#30'=>array('0'=>3), 
    'value_1#31'=>array('0'=>4), 
    'value_2#31'=>array('0'=>5), 
    'value_3#31'=>array('0'=>6), 
    'some_value3' => 'xyz3', 
    'some_value4' => 'xyz4', 
); 


$array_30 = array 
(
'0'=>1, 
1=>'2', 
2=>'3' 
); 

$array_31 = array 
(
'0'=>4, 
'1'=>'5', 
'2'=>'6' 
); 

我需要一個數組,並插入array_30array_31到數據庫中。

+0

請將您的代碼格式化爲「反引號\」或用四個空格表示 – 2011-01-11 14:37:42

+0

這是真實情況,我的意思是您的真實代碼?請發佈代碼本身.. – B4NZ41 2011-01-11 14:39:59

+0

這與「密鑰分割」有關嗎? – 2011-01-11 14:41:57

回答

2
foreach($rt1 as $value){ 
    $rt2[] = $value['0']; 
} 

問題已更新,所以這裏是一個更新的答案。快速檢查,你應該嘗試並更新這對你有什麼更通用的目的,但由於概念證明,可運行的例子:

<?php 
$rt1 = array 
(
    'some_value1' => 'xyz1', 
    'some_value2' => 'xyz2', 
    'value_1#30'=>array('0'=>1), 
    'value_2#30'=>array('0'=>2), 
    'value_3#30'=>array('0'=>3), 
    'value_1#31'=>array('0'=>4), 
    'value_2#31'=>array('0'=>5), 
    'value_3#31'=>array('0'=>6), 
    'some_value3' => 'xyz3', 
    'some_value4' => 'xyz4', 
); 

$finalArrays = array(); 

foreach($rt1 as $key=>$value){ 
    if(is_array($value)){ 
     $array_name = "array_".substr($key,-2); 
     ${$array_name}[] = $value['0']; 
    } 

} 

var_dump($array_30); 
var_dump($array_31); 



?> 

將輸出兩個數組與數字1,2,3和4,5,6 respectivily

0

我假設你想加入每個第二級陣列的值,在這種情況下:

$result = array(); 
foreach ($rt1 as $arr) { 
    foreach ($arr as $item) { 
     $result[] = $item; 
    } 
} 
0

。假定這是你的實際代碼,可能你需要使用foreach在某處複製數組,然後cr eate新的數組,如你所願:

foreach($arr as $key => $value) { 
    $arr[$key] = 1; 
} 
0

Nanne(它提醒動態變量命名的我)的啓發,該解決方案將在\#後每個標識符的工作,無論它的長度:

foreach ($rt1 as $key => $value) 
{ 
    if (false == strpos($key, '#')) // skip keys without # 
    { 
     continue; 
    }  
      // the part after the # is our identity 
    list(,$identity) = explode('#', $key); 
    ${'array_'.$identity}[] = $rt1[$key]['0']; 
}