2012-11-26 45 views
2

我有2個陣列,我想2創建二維陣列,用於創建MySQL記錄創建二維陣列配有2張陣列

 Array 
     (
      [0] => a 
      [1] => b 
      [2] => c 
     ) 
     Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
     ) 

我想2將它們合併到2維陣列這樣

 Array 
(
[0] => Array 
    (
     [designation_id] => 1 
     [judge_name] => a 
    ) 

[1] => Array 
    (
     [designation_id] => 2 
     [judge_name] => b 
    ) 

[2] => Array 
    (
     [designation_id] => 3 
     [judge_name] => c 
    ) 

) 

我使用array_merge_recursive並且它生成這樣的結果

Array 
(
    [0] => a 
    [1] => b 
    [2] => c 
    [3] => 1 
    [4] => 2 
    [5] => 3 
) 
+0

如果你得到任何(或沒有),你應該評論(也許接受一個),讓人們知道問題的答案需要什麼。以前的問題也是如此。 – George

+0

Drat,我的回答來得太晚了=/ –

回答

2

假設$array1是的judge_name$array2designation_id

$newArray = array(); 

for($i=0; $i<count($array1); $i++) 
{ 
    $newArray[] = array(
     'designation_id' => $array2[$i], 
     'judge_name' => $array1[$i] 
    ); 
} 

Codepad Demo

輸出

Array 
(
    [0] => Array 
     (
      [designation_id] => 1 
      [judge_name] => a 
     ) 

    [1] => Array 
     (
      [designation_id] => 2 
      [judge_name] => b 
     ) 

    [2] => Array 
     (
      [designation_id] => 3 
      [judge_name] => c 
     ) 

) 
3

假設總是會有在$array1值相同的量存在於$array2 ..

$array1 = Array("a","b","c"); 
$array2 = Array(1,2,3); 
$newArray = Array(); 

foreach($array1 as $key => $arr1Val){ 
    $newArray[$key]['designation_id'] = $array2[$key]; 
    $newArray[$key]['judge_name'] = $array1[$key]; 
} 

當然,您將不得不根據您的需要更改$array1$array2,但您瞭解基本想法。檢查它here

1

簡單得要命

$array1 = array('a', 'b', 'c'); 
$array2 = array(1,2,3); 

$merged = array(); 
foreach($array1 as $key => $value) 
{ 
    $merged[$key] = array(
     'judge_name' => $value, 
     'designation_id' => array_key_exists($key, $array2) ? $array2[$key] : null 
    ); 
} 
1

假設兩個數組大小相同

$length = count($array1); 
$finalArray = array(); 

for ($i = 0; $i < $length; $i++) { 
    $temp = array(); 
    $temp['designation_id'] = $array1[$i]; 
    $temp['judge_name'] = $array2[$i]; 
    $finalArray[$i] = $temp; 
} 
1

,如果你有PHP> = 5.3,你可以使用MultipleIterator用於這一目的:

$designations = array(1, 2, 3); 
$judges = array('a', 'b', 'c'); 

$mt = new MultipleIterator(MultipleIterator::MIT_KEYS_ASSOC); 
$mt->attachIterator(new ArrayIterator($designations), "designation_id"); 
$mt->attachIterator(new ArrayIterator($judges), "judge_name"); 

$final = iterator_to_array($mt, false); 
print_r($final); 

Demo

它迭代多個數組,從每個迭代器中的每個數組中獲取一個值;您可以爲每個陣列分配一個用於形成單個數組項的項。使用iterator_to_array()將結果轉換爲數組。

1
$a = array('a', 'b', 'c'); 
$b = array(1,2,3); 
$output = array_map(function($i, $j){ 
    return array(
     'judge_name'  => $j, 
     'designation_id' => $i 
    ); 
}, $a, $b); 

var_dump($output); 

輸出

array(3) { 
    [0]=> 
    array(2) { 
    ["judge_name"]=> 
    int(1) 
    ["designation_id"]=> 
    string(1) "a" 
    } 
    [1]=> 
    array(2) { 
    ["judge_name"]=> 
    int(2) 
    ["designation_id"]=> 
    string(1) "b" 
    } 
    [2]=> 
    array(2) { 
    ["judge_name"]=> 
    int(3) 
    ["designation_id"]=> 
    string(1) "c" 
    } 
} 
+0

嘗試更改閉包以返回數組項,直接使用'array_map()'的輸出來填充'$ output'。 –

+0

這也很好,謝謝 –

0
$new1=array("a","b","c"); 
$new2=array("1","2","3"); 
$req=array(); 
$d=0; 
foreach($new1 as $value1) 
{ 
    foreach($new2 as $value2) 
    { 
     $req[$d]["designation_id"]=$value1; 
     $req[$d]["judge_name"]=$value2; 
     $d++; 
    } 
} 

echo "<pre>"; 
print_r($req);