人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPをjsに書きなおそうと考えてます。
両方の知識がないため理解できていません。
http://blog.tojiru.net/article/135554038.html
欲しい回答は↑にある、任意の配列を水平方向につなぎ合わせたjsのソースコードです。
func_get_args, (array)など現状理解できず書きなおすのにも時間掛かりそうなため質問させていただいております。

以下phpサンプル
function combine() {
$args = func_get_args();

$a = array_shift($args);
$b = array_shift($args);

$result = array();
foreach ($a as $val1) {
foreach ($b as $val2) {
$result[] = array_merge((array)$val1, (array)$val2);
}
}

if (count($args) > 0) {
foreach ($args as $arg) {
$result = combine($result, $arg);
}
}

return $result;
}

$p = array("男","女");
$q = array("小","中","高","大","専","院");
$r = array("北海道","本州","四国","九州","沖縄","海外");
print_r(combine($q,$p,$r));
#print_r(combine($p,$q, $r)); OK
#print_r(combine($r,$p, $q)); OK

●質問者: studio2021
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Cherenkov
●300ポイント ベストアンサー

そのまま移植したつもり。合ってるかな…。
http://jsfiddle.net/cherenkov/xqc3v/2/

<script>
function combine() {
 var args = Array.prototype.slice.call(arguments);
 var a = args.shift();
 var b = args.shift();
 var result = [];
 a.forEach(function(val1) {
 b.forEach(function(val2) {
 if (!(val1 instanceof Array)) {
 val1 = [val1];
 }
 result.push(val1.concat(val2));
 });
 });
 if (args.length > 0) {
 args.forEach(function(arg) {
 result = combine(result, arg);
 });
 }
 return result;
}
var p = ["男","女"];
var q = ["小","中","高","大","専","院"];
var r = ["北海道","本州","四国","九州","沖縄","海外"];

// var t = combine(p, q, r);
// document.write(JSON.stringify(t));
var t = combine(r, q, p);
document.write(JSON.stringify(t));
</script>

Cherenkovさんのコメント
console.logでみるとちょっとおかしいですね。

Cherenkovさんのコメント
$result[] = array_merge((array)$val1, (array)$val2); のところを、 result.push(Array.prototype.concat.call(val1, val2)); としていたのですが val1 = Array.prototype.slice.call(val1); result.push(val1.concat(val2)); に変えてみました。

studio2021さんのコメント
ありがとうございます! console.log(combine(r, q, p)); などした場合、何故か北海道などが1文字ずつになっているようです。 sliceのあたりですかね。ただそこを直すと他がってのはありそうですが、いろいろ試してみます.

Cherenkovさんのコメント
すみません。修正しました。

studio2021さんのコメント
ご連絡遅くなりましたがことら少し修正し使わせて頂きました。助かりましたmm
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ