2016-04-06 16 views
1

それらの値を連結して2つの配列をマージしたいとします。今はarray_merge()を使用していますが、それは私に予想される結果を与えません。値を連結して配列をマージする方法は?

コード:

$software1 = $_POST['software1']; 
$software2 = $_POST['software2']; 
$software3 = array_filter($software2); 

$result = array_merge($software1, $software3); 
foreach($result as $value){ 
    echo $value . "<br>"; 
} 

電流出力:私が望む何

software 
software 
software 
1 
2 
3 

software 1 
software 2 
software 3 
+0

だけを確認してくださいあなたはそれはあなたがそれをユーザーに提供だから、ポスト/取得/クッキーから何かに注意を払う必要がありますことを、ウェブ上の実際のサイト上で知っています。たとえば、画面上に印刷すると、HTMLのjavascriptタグを付けて、一部のユーザーにとって悪いことを実行する可能性があります。 htmlの場合、htmlentitiesやhtmlspecialcharsを使ってhtmlを "エスケープ"して損害を引き起こすことはありません。例えば、in in SQLを使用する場合にも同様の問題が発生します。詳細は、クロスサイトスクリプティングとSQLインジェクションを参照してください。 – wedstrom

答えて

0

いくつかの方法。ここでは2つです:

foreach($software1 as $key => $value){ 
    echo "$value {$software2[$key]}<br>"; 
} 

または1つまたはその他が一意であることが保証されている場合、キーとしてそれを使用します。それを行うには

foreach(array_combine($software1, $software2) as $key => $value){ 
    echo "$key $value<br>"; 
} 
1

あなたがここにarray_map()を使用して、両方の配列の両方から対応する値を一緒に連結します新しい配列を作成します。もちろん

$result = array_map(function(...$v){ 
    return implode(" ", $v); 
}, $software1, $software3 /* , more arrays */); 

あなたはarray_map()echoを使用することができ、それあなただけ出力したい場合。連結によって結合したい配列の量が不明な場合はcall_user_func_array()とすることができます。

$result = call_user_func_array("array_map", [function(...$v){return implode(" ", $v);}, $arrays]); 
1

ちょうど別の方法:$software2はユニークな値であれば、あなたはarray_combineを使用することができます。

foreach (array_combine($_POST['software2'], $_POST['software1']) as $key => $val) { 
    echo $val , ' ', $key; 
} 
関連する問題