我正在尝试运行一些逻辑测试并将字符串列表与数据库匹配,但需要帮助我拥有的数组。
我有一个数组:
$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
我需要有关数组语法的帮助,以帮助我将代码构建为循环中的3级逻辑参数
这样的事情:我无法弄清楚如何操纵上面的数组以便得到变量
$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));
}
答案 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];
}
}
}