我有一个由不同长度的字符串组成的多维数组,如下所示:
$a =
Array ( [0]
Array ( [0] AQWER, [1] CFG, [2] JUHTYREWQ, [3] K, [4] LO ),
Array [1]
Array ( [0] VFG, [1] yhtredw, [2] koeutydjwiq, [3] bg, [4] hytefs, [5] M),
Array [2]
Array ( [0] BHTWQ, [1] BH, [2] NJUy))
同样,我有一个包含以下值的mySQL表
myTable
AQWER
CFG
JUHTYREWQ_K_LO
VFG
yhtredw
bg_hytefs
BHTWQ
BH_ NJUy
我正在尝试根据SQL表中的匹配来测试和重新构造数组,使其看起来像这样:
$a =
Array ( [0]
Array ( [0] AQWER, [1] CFG, [2] JUHTYREWQ_K_LO ),
Array [1]
Array ( [0] VFG, [1] yhtredw, [2] koeutydjwiq, [3] bg_hytefs, [5] M),
Array [2]
Array ( [0] BHTWQ, [1] BH_NJUy))
仍显示尚未找到的值(例如koeutydjwiq)
我帮助我操纵$a
,以便能够测试1个字符串,2个字符串和3个字符串组合。
但是我的代码没有成功获取字符串组合(在数组和表中肯定存在),因此,不会重新格式化原始数组$a
而且我不能完全找出原因。
事实上,更具体地说,在IF语句中调用print_r($para)
时,我得到.........
这是我的代码:
foreach ($a as $val) {
for ($i=0; $i<count($val); $i++) {
// A_B_C
if (isset($val[$i+2])) {
$exagon = array();
$exagon = $val[$i] . '_' . $val[$i+1] . '_' . $val[$i+2];
$conn = mysqli_connect("localhost:8889","root","root","myDB");
$query = "SELECT * FROM `myTable` WHERE LIST = '".$exagon."'";
$para = array(
);
$result = mysqli_query($conn, $query);
//echo $result;
while($row = mysqli_fetch_array($result)) {
$para[] = array($row['LIST']);
}
if (isset($para) && !empty($para)) {
print_r($para);
array_splice($a, $i, $i+2, $para);
$i=$i+2;
}
else {
unset($para);
unset($exagon);
}
}
// A_B
elseif (isset($val[$i+1])) {
$exagon = array();
$exagon = $val[$i] . '_' . $val[$i+1];
$conn = mysqli_connect("localhost:8889","root","root","myDB");
$query = "SELECT * FROM `myTable` WHERE LIST = '".$exagon."'";
$para = array(
);
$result = mysqli_query($conn, $query);
while($row = mysqli_fetch_array($result)) {
$para[] = array($row['LIST']);
}
if (isset($para) && !empty($para)) {
print_r($para);
array_splice($a, $i, $i+1, $para);
$i=$i+1;
}
else {
unset($para);
}
}
// A
else {
echo $val[$i];
}
}
}
不可否认,通过研究,我找到了帖子和手册来指导我使用array_splice并在SQL查询中调用变量,但很可能在此代码中存在多个错误
答案 0 :(得分:1)
请使用以下代码。这些动态数组也可以用你的数组数据检查它是否正常工作
$conn = mysqli_connect("localhost:8889","root","root","myDB");
//These will create commbination
$finalArray = array();
$sampleArray = array(array('AQWER','CFG','JUHTYREWQ','K','LO'),array('mno','xxy','kkl'));
foreach($sampleArray as $key=>$val){
$combincationArr = array();
foreach($val as $k1=>$v1){
$combincationArr[] = $v1;
$prevStr = $v1;
for ($i=($k1+1); $i<(count($val)); $i++) {
$prevStr .= '_'.$val[$i];
$combincationArr[] = $prevStr;
}
}
if(!empty($combincationArr)){
$finalArray[$key] = $combincationArr;
}
}
$destArr = array();
foreach($finalArray as $key=>$val){
if(!empty($val)){
$para = array();
$query = "SELECT * FROM `myTable` WHERE FIND_IN_SET (LIST,'". implode(',', $val)."')";
$result = mysqli_query($conn, $query);
while($row = mysqli_fetch_array($result)) {
$para[] = array($row['LIST']);
}
$destArr[] = $para;
}
}
echo "<pre>";print_r($destArr);die;