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

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2012/11/15 22:37:56
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Cherenkov No.1

回答回数1504ベストアンサー獲得回数493

ポイント300pt

そのまま移植したつもり。合ってるかな…。
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>
他3件のコメントを見る
id:Cherenkov

すみません。修正しました。

2012/11/12 15:52:30
id:studio2021

ご連絡遅くなりましたがことら少し修正し使わせて頂きました。助かりましたmm

2012/11/15 22:43:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません