プロが教える店舗&オフィスのセキュリティ対策術

PHP初心者です。

$arrA = ['1','2','1'];
$arrB = ['あ い う','え','お'];

上記の配列をfor文で同じ数字キー同士の配列に組み換えた後、
$arrC = ['1','あ い う']、['2','え']、['1','お']

先頭が「1」の配列を選び、それらを空白で分割した後に結合したいのですが、for文で生成された配列を結合する方法が分かりません。

$arrD = ['あ','い','う']、['お']を$arrE = ['あ','い','う','お']と言う形にしたいです。

「$arrA」と「$arrB」が「$arrE」になれば良いので、方法が変わっても構いません。
よろしくお願いいたします。


以下プログラム

$arrA_count = count($arrA);
for ($s = 0; $s < $arrA_count; ++$s) {
$arrC = [$arrA[$s], $arrB[$s]];
if ($arrC[0] === '1') {
$arrD = explode(" ",$arrC[1]);

}
}

A 回答 (3件)

$arrCや$arrDを経由する必要があるかどうかは疑問ですが


ご提示のものを最終型の$arrEにもっていくにはこんな感じになります

<?PHP
$arrA = ['1','2','1'];
$arrB = ['あ い う','え','お'];
$arrC = [];
array_walk($arrA,function($x,$y) use($arrB,&$arrC){
$arrC[]=[$x,$arrB[$y]];
});
print "arrC:";
print_r($arrC);
print "<hr>";
$arrD = [];
array_walk($arrC,function($x) use(&$arrD){
if($x[0]=="1") $arrD[]=explode(" ",$x[1]);
});
print "arrD:";
print_r($arrD);
print "<hr>";
$arrE =[];
array_walk($arrD,function($x) use(&$arrE){
$arrE=array_merge_recursive($arrE,$x);
});
print "arrE:";
print_r($arrE);
print "<hr>";
?>
    • good
    • 0
この回答へのお礼

助かりました

回答ありがとうございます。

お手数をおかけ致しました。
求めていた物ができました。
本当にありがとうございました。

お礼日時:2017/06/07 14:20

$arrAと$arrBの要素数が同じであると担保されているのであれば


こうしてください

<?PHP
$arrA = ['1','2','1'];
$arrB = ['あ い う','え','お'];
$arrC =[];
array_walk($arrA,function($x,$y) use($arrB,&$arrC){
$arrC[]=[$x,$arrB[$y]];
});
print_r($arrC);
?>
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
$arrAと$arrBの要素の数は同じで担保されています。

上記のプログラムを試したところ、$arrCに全ての項目を含む二次元配列が出力されましたが、
先頭が「1」である配列を結合するにはどうすれば良いのでしょうか?

私の理解力不足ですみません。
よろしくお願いいたします。

お礼日時:2017/06/07 13:16

マニュアルを調べればいいだけだと思うんだよな~.



['あ','い','う'] と ['お'] から ['あ','い','う','お'] を作るなら
http://php.net/manual/ja/function.array-merge.php
全体としてはさらに explode と
http://php.net/manual/ja/function.array-map.php
を組み合わせる, かなぁ.
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

色々と調べたのですが、組み合わせ方の発想が出ませんでした。
貰ったヒントを元に勉強してみます。

お礼日時:2017/06/07 13:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!