PHP数组多维跨所有元素

PHP数组多维跨所有元素,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我需要从dinamic结构创建一个sql语句。该结构来自多维数组。说明它更难,所以我举3个例子: 示例1:如果我有这个数组: myarry Array ( [5] => Array ( [0] => 2 [1] => 5 ) [6] => Array ( [0] => 11 ) ) myarry Array (

我需要从dinamic结构创建一个sql语句。该结构来自多维数组。说明它更难,所以我举3个例子:

示例1:如果我有这个数组:

myarry Array
(
    [5] => Array
        (
            [0] => 2
            [1] => 5
        )

    [6] => Array
        (
            [0] => 11
        )
)
myarry Array
(
    [5] => Array
        (
            [0] => 2
            [1] => 5
        )

    [6] => Array
        (
            [0] => 11
            [1] => 8
        )
)
myarry Array
(
    [5] => Array
        (
            [0] => 2
            [1] => 5
        )

    [6] => Array
        (
            [0] => 11
        )

    [7] => Array
        (
            [0] => 70
            [1] => 71
            [2] => 72
        )
)
我需要创建一个字符串,如: (2及11)或(5及11)

示例2:如果我有这个数组:

myarry Array
(
    [5] => Array
        (
            [0] => 2
            [1] => 5
        )

    [6] => Array
        (
            [0] => 11
        )
)
myarry Array
(
    [5] => Array
        (
            [0] => 2
            [1] => 5
        )

    [6] => Array
        (
            [0] => 11
            [1] => 8
        )
)
myarry Array
(
    [5] => Array
        (
            [0] => 2
            [1] => 5
        )

    [6] => Array
        (
            [0] => 11
        )

    [7] => Array
        (
            [0] => 70
            [1] => 71
            [2] => 72
        )
)
我需要创建一个字符串,如: (2及11)或(5及11)或(2及8)或(5及8)

示例3:如果我有这个数组:

myarry Array
(
    [5] => Array
        (
            [0] => 2
            [1] => 5
        )

    [6] => Array
        (
            [0] => 11
        )
)
myarry Array
(
    [5] => Array
        (
            [0] => 2
            [1] => 5
        )

    [6] => Array
        (
            [0] => 11
            [1] => 8
        )
)
myarry Array
(
    [5] => Array
        (
            [0] => 2
            [1] => 5
        )

    [6] => Array
        (
            [0] => 11
        )

    [7] => Array
        (
            [0] => 70
            [1] => 71
            [2] => 72
        )
)
我需要创建一个字符串,如: (2及11及70)或(2及11及71)或(2及11及72)或(5及11及70)或(5及11及71)或(5及11及72)

等等。。。 数组上的索引并不重要

我已经试过了:

foreach ($myarry as $clave => $feature){
        ${"feat_$n"} = $feature;
        $n++;
    }
$quan= count($myarry);

    foreach ($feat_0 as $feature1) {

        for ($m = 1; $m < $quan; $m++){
            $name = "feat_{$m}";
            foreach ($$name as $feature2) {
                echo "OR feature1: ".$feature1." AND feature2: ".$feature2."<br>";
            }
        }
    }
foreach($myarry as$clave=>$feature){
${“feat_$n”}=$feature;
$n++;
}
$quan=计数($myarry);
foreach($feature\u 0作为$feature1){
对于($m=1;$m<$quan;$m++){
$name=“feat_{$m}”;
foreach($$name作为$feature2){
echo“或feature1:.$feature1.”和feature2:.$feature2.“
”; } } }
而且:

foreach ($myarry as $clave => $feature){
        ${"feat_$n"} = $feature;
        $n++;
    }
$i =  0;
    foreach ($feat_0  as $clave0 => $feature0) {
        for ($m = 1; $m < $cantidad; $m++){
            $name = "feat_{$m}";
            foreach ($$name  as $clave1 => $feature1) {

                echo "-feature0: ".$feature0." - feature1: ".$feature1." - i: ".$i." - m: ".$m."<br>";
                $i++;
                if($m == 1)
                    $indice = $feature1;
                else
                    $pena[$feature0][$indice][$i] = $feature1;
            }
            $i=0;
        }
    }
foreach($myarry as$clave=>$feature){
${“feat_$n”}=$feature;
$n++;
}
$i=0;
foreach($feat_0作为$clave0=>$feature0){
对于($m=1;$m<$cantidad;$m++){
$name=“feat_{$m}”;
foreach($$name作为$clave1=>$feature1){
echo“-feature0:“.$feature0.”-feature1:“.$feature1.”-i:“.i.”-m:“.m.”
”; $i++; 如果($m==1) $indice=$feature1; 其他的 $pena[$feature0][$indice][$i]=$feature1; } $i=0; } }
但我甚至不接近解决方案:( 我希望问题是清楚的。
欢迎任何帮助!

这里是来自的自定义函数,经过一些修改

首先,我创建了所有数组元素(如集合)的唯一组合,然后映射它们以创建所需的字符串

function custom_function($myarry)
{
    if (count($myarry) == 0) {
        return array();
    }
    $a = array_shift($myarry);
    if (count($myarry) == 0) {
        $c = array(array());
    } else {
        $c = custom_function($myarry); // recursive call
    }
    $r = array();
    foreach ($a as $v) {
        foreach ($c as $p) {
            $r[] = array_merge(array($v), $p);
        }
    }
    return $r;
}
$temp   = custom_function($myarry);
$andArr = [];
array_walk($temp, function ($item, $key) use (&$andArr) {
    $andArr[] = '(' . implode(" AND ", $item) . ') ';
});
$str = implode(' OR ', $andArr);
-将用户提供的函数应用于阵列的每个成员
-将元素从数组的开头移开


.

使用
内爆('AND')
来创建内部字符串,使用
内爆('OR')
来创建外部字符串。StackOverflow不是免费的编码服务。请更新您的问题以显示您在a中已经尝试过的内容。有关更多信息,请参阅,并选择:)基本上你需要所有的组合-试着这样做forst,然后使用
内爆
来创建实际的查询,对不起,我以前没有放我的代码,因为我还没有接近。。。但我要更新我的问题。我认为内爆不起作用,因为所有元素都在它们之间。这里有一个非常简单的解决方案:谢谢Rahul!它很有魅力!你太棒了!