2017-03-12 9 views
0

こんにちは、私は一緒にマージされた同じキーを持つ2つの配列の要素を取得しようとしています。phpは1つのキーで2つの配列要素を結合します

array1 = array(0=>"1", 1=>"2", 2=>"3"); 
array2 = array(0=>"a", 1=>"b", 2=>"c"); 
foreach ($array1 as $origKey => &$subArray) 
    foreach ($array2[$origKey] as $key => $val) 
    $subArray[$key] = $val; 

必要ouptut:

array(0=>"1a", 1=>"2b", 2=>"3c") 

誰かが私を助けてくださいことはできますか?

+1

これは役立つかもしれない:http://stackoverflow.com/q/32061254/3933332 – Rizier123

+0

'foreachの($として配列1 $ origKey =>&$サブアレー)$サブアレー= $ array2の[$ origKey];' –

+0

。 @MarkBakerそれは動作します。どうもありがとうございました! –

答えて

0
<? 
$array1 = array(0=>"1", 1=>"2", 2=>"3"); 
$array2 = array(0=>"a", 1=>"b", 2=>"c"); 

foreach ($array1 as $origKey => &$subArray) 
    $new[] = $subArray.$array2[$origKey]; 


print_r($new); 
//Output: Array ([0] => 1a [1] => 2b [2] => 3c) 
0

ここに行く:

<?php 

$array1 = array(0=>"1", 1=>"2", 2=>"3"); 
$array2 = array(0=>"a", 1=>"b", 2=>"c"); 

$sub = []; 
foreach ($array1 as $key => $value) { 
    array_push($sub, $value.$array2[$key]); 
} 

var_dump($sub); 

- >

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

は値

function combineValues($a1, $a2){ 
    foreach ($a1 as $k => $v) 
     $r[$k] = $v . $a2[$k]; 
    return $r; 
} 
0
your this statement foreach ($array2[$origKey] as $key => $val) is wrong 
that part $array[$origkey] coz in foreach $key as $value this basically evaluates whole array so use this way .... 

<?php 
$array1 = array(0=>"1", 1=>"2", 2=>"3"); 
$array2 = array(0=>"a", 1=>"b", 2=>"c"); 
$array3 = array(); 
for($i=0 ;$i<3 ;$i++) 
{ 
    $array3[] = $array1[$i].$array2[$i]; 
} 
foreach($array3 as $merge) 
{ 
    echo $merge."<br>"; 
} 
?> 
0

レットを結合するには、次の関数を使用しますさんは、これが唯一の任意のlenghtsの1次元配列のために動作しますが、ポイントを得る:ここで

$concatted_array = array(); // the new array 

// if the 2 arrays don't have te same lenght, get the largest array 
$max_array_length = (count($array1) > count($array2)) ? count($array1) : count($array1); 

// loop for the longest array 
for ($i=0; $i <$max_array_length ; $i++) { 

    if($i < count($array1) && $i < count($array2)) // if the element exist for both arrays 
    { 
    $concatted_array[$i] = $array1[$i].$array2[$i]; 

    } elseif($i < count($array1)) // if element only exists in $array1 
    { 
     $concatted_array[$i] = $array1[$i]; 

    } else // if element only exists in $array2 
    { 

     $concatted_array[$i] = $array2[$i]; 
    } 
} 

var_dump($concatted_array); 

が出力されます。今ここに

array (size=3) 
    0 => string '1a' (length=2) 
    1 => string '2b' (length=2) 
    2 => string '3c' (length=2) 

はちょうどあなたがエラーを持っていた場合、いくつかのヒントです

  • 変数の前に$を忘れないようにしてください。
  • foreachは、配列またはオブジェクトでのみ使用する必要があります。したがって、$array2[$origKey]が配列またはオブジェクトでない場合は、foreach ($array2[$origKey] as $key => $val)を使用しないでください。詳細はforeach documentationをご覧ください。
関連する問題