php从另一个数组中选择数组值

时间:2014-06-02 19:09:35

标签: php arrays

更新:我找到了解决方案here

我有3个阵列:

$a = array( 'a1', 'a2' );
$b = array( 'b1', 'b2' );
$c = array( 'c1', 'c2' );

每个数组都有2个值,所以我想通过从每个数组中选择值来创建一个不同的数组。有8种(2 * 2 * 2 = 8)种可能的组合:

$new1 = array( 'a1', 'b1', 'c1' );
$new2 = array( 'a2', 'b1', 'c1' );

$new3 = array( 'a1', 'b2', 'c1' );
$new4 = array( 'a2', 'b2', 'c1' );

$new5 = array( 'a1', 'b1', 'c2' );
$new6 = array( 'a2', 'b1', 'c2' );

$new5 = array( 'a1', 'b1', 'c2' );
$new6 = array( 'a2', 'b1', 'c2' );

$new7 = array( 'a1', 'b2', 'c2' );
$new8 = array( 'a2', 'b2', 'c2' );

我试过这段代码,但似乎完全错了。

$a = array( 'a1', 'a2' );
$b = array( 'b1', 'b2' );
$c = array( 'c1', 'c2' );

$count = max(count($a), count($b), count($c));
$bim = array();

for($i=0; $i < $count; $i++) {
   if (isset($a[$i])) $bim[] = $a[$i];
   if (isset($b[$i])) $bim[] = $b[$i];
   if (isset($c[$i])) $bim[] = $c[$i];
}

$max = count($a) * count($b) * count($c);
for($i=0; $i < $max; $i++) 
{
    $html[$i] = bimbim( $bim );
    $newarr = array_shift($bim);
    $bim = array_merge( $bim, array($newarr) ); 
}

function bimbim( $bim )
{
    foreach( $bim as $k => $v )
    {
        $cnt++;
        if ( $cnt <= 3 )
        {
            $html .= $v . ",";
        }
    }
    return rtrim($html, ",");
}

print_r( $html );

此代码只有6个真正的组合;最后2个组合是重复的。

事先感谢朋友们:)

0 个答案:

没有答案