在循环

时间:2016-06-22 01:28:37

标签: php arrays implode

我正在尝试运行一些逻辑测试并将字符串列表与数据库匹配,但需要帮助我拥有的数组。

问题

我有一个数组:

$myArray =
array([0] (
   array [0] ([0] A, [1] B, [2] C, [3] H)
   array [1] ([0] A, [1] D, [2] G, [3] H, [4] L)
   array [2] ([0] D, [1] Z, [2] J, [3] K, [4] O, [5] X)
)
array([1] (
   array [2] ([0] F, [1] Y, [2] W, [3] H, [4] L)
)
array([2] (
   array [0] ([0] O, [1] T, [2] C, [4] O, [5] X)
   array [1] ([0] U, [1] E, [2] E, [3] D)
))

我正在尝试在一个列表中测试此数组中的字符串,该列表在表中组合了1,2和3个字符串以及“_”。
示例:A或A_B或A_B_C

变量和常量

  • 阵列长度可以在阵列的第二个维度
  • 中变化
  • 字符串可以重复多次,与逻辑无关
  • 然而,常量是组合两个字符串或三个字符串的测试总是顺序的(例如,如果有意义的话,总是A_B或A_B_C而不是A_D或A_D_J)
  • 序列每次移动一个字母,例如首先测试(A_B_C,A_B和A),然后测试(B_C_D,B_C和B),然后(C_D_E等......)
  • 当数组没有足够的字符串继续测试2或3个组合单词时,测试应该只运行1个字符串

我想做什么和期望的结果

我需要有关数组语法的帮助,以帮助我将代码构建为循环中的3级逻辑参数

这样的事情:
如果A_B_C存在于myTable中,则执行某些操作 如果A_B存在则执行其他操作 如果存在又做了另一件事 ELSE返回空白

我无法弄清楚如何操纵上面的数组以便得到变量

$firstTest = 'A_B_C'; <br>
$secondTest = 'A_B'; <br>
$thirdTest = 'A'; <br>

(我可以获得第三次测试)

我尝试了什么

通过在其他数组问题上获得一些有用的帮助,我尝试通过foreach循环传递$ myArray,如下所示:

foreach ($myArray as $newArray) {
$i = 0;
$j = $i++;

foreach($newArray as $key=>$val) {
    $impArray = array($val[$i],$val[$j]);
    echo implode('_', $impArray);
}
}

但是这会占用每个第一级数组的第一个字符串。

编辑:

我一直在尝试使用array_slice,并且几乎可以到达那里,但模式并不完全遵循3x字符串组合;相反,它从3个字符串增加到4个字符串,到5个字符串等......我不知道为什么。

这是我最近的尝试:

foreach ($myArray as $newArray => $val) {
    $x = 0;
    $z = 3;
    $route = array();

    do  {

        $route = array_slice($val, $x , $z);
        $imp_route = implode('_', $route);
        echo $imp_route;
        $x++;
        $z++;
    } while ( $z <= count($val));
}

1 个答案:

答案 0 :(得分:1)

也许有一种更好的方式来做到这一点,但这种方式可以清楚地表明你想要实现的目标:

foreach ($myArray as $newArray) {
    foreach ($newArray as $valuesArray) {
        for ($i=0; $i<count($valuesArray); $i++) {
            // A_B_C
            if (isset($valuesArray[$i+2])) {
                echo $valuesArray[$i] . '_' . $valuesArray[$i+1] . '_' . $valuesArray[$i+2];
            }
            // A_B
            if (isset($valuesArray[$i+1])) {
                echo $valuesArray[$i] . '_' . $valuesArray[$i+1];
            }
            // A
            echo $valuesArray[$i];
        }
    }
}
相关问题