将下面这个$a的数组,转换成注释中的字符串,求高手帮忙给解决一下。
$a[0]=array(1,2,3);
$a[1]=array(4,5);
$a[2]=array(6);
/*
146
156
246
256
346
356
*/

解决方案 »

  1.   

    笨办法
    $a[0]=array(1,2,3); 
    $a[1]=array(4,5); 
    $a[2]=array(6); 
    $bs = array('');
    foreach (array_reverse($a) as $row) {
    $arr = array();
    foreach ($row as $col) {
    foreach ($bs as $b) {
    $arr[] = $col.$b;
    }
    }
    $bs = $arr;
    }
    print_r($bs);
      

  2.   

    执行出来的结果是:
    Array ( [0] => 46 [1] => 56 ) 
    楼上的大哥,没有对啊。
      

  3.   

    肯定是$a[0]被你漏掉了,没问题的啊
    Array
    (
        [0] => 146
        [1] => 156
        [2] => 246
        [3] => 256
        [4] => 346
        [5] => 356
    )
      

  4.   

    刚才是我的$a[0]给注释掉了,我测试了一下,结果对了,现在又发现一个问题,如果有$a[3]=array(3,1);或者$a[n],结果就又不对了。
      

  5.   

    这是一个求解笛卡尔积的问题。
    $a[0] = array(1, 2, 3, 4);
    $a[1] = array(5, 6, 7);
    $a[2] = array(8, 9);$index = array_fill(0, count($a), 0);while ($index[0] < count($a[0])) {
    $temp = '';
    for ($i = 0; $i < count($index); ++$i) {
    $temp .= $a[$i][$index[$i]];
    }
    echo $temp, '<br/>';
    ++$index[count($index) - 1];
    for ($i = count($index) - 1; $i > 0; --$i) {
    if ($index[$i] >= count($a[$i])) {
    $index[$i] = 0;
    ++$index[$i - 1];
    }
    }
    }
    输出:
    158
    159
    168
    169
    178
    179
    258
    259
    268
    269
    278
    279
    358
    359
    368
    369
    378
    379
    458
    459
    468
    469
    478
    479
      

  6.   


    如果有$a[3]=array(3,1);你希望的结果是什么?