2016-06-23 8 views
1

MySQLのテーブルに対して正の一致に基づいて、アレイ内の特定の文字列を組み合わせる:同様Iは以下のように様々な長さの文字列からなる多次元アレイ有し

$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)) 

を、Iは、MySQLテーブルは、次の値を含む有し

myTable 
AQWER 
CFG 
JUHTYREWQ_K_LO 
VFG 
yhtredw 
bg_hytefs 
BHTWQ 
BH_ NJUy 

望ましい結果

私はそれがこのようになりますように、SQLテーブル内の一致に基づいて配列をテストし、定式しようとしています:

また、まだ見つからなかった値(例:

を私は1列、2列と3列の組み合わせをテストすることができるように私は$aを操作するうえで大きな助けを受けた:私がこれまで試してみました何koeutydjwiq)

しかし、私のコードでは文字列の組み合わせ(配列とテーブルの両方にある)が正常に選択されず、結果として元の配列$aが再フォーマットされず、理由がわかりません。

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]; 
      } 
     } 
} 

確かに、研究を通じて、私が発見した投稿やマニュアルへ:IF文でprint_r($para)を呼び出すときに、より具体的に実際に

、私はここで

.........が私のコードで取得しますarray_spliceを使用してSQLのクエリで変数を呼び出す際に私を案内しますが、このコードには複数のエラーが存在する可能性があります

+0

配列の上に罰金働いて、あなたの配列データと作業チェックのHello –

+0

静的または動的である、それは再び私を助けるための静的 – Jacob

答えて

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; 
+0

感謝です。それは全く機能しませんでした。私はエラーが発生します警告:explode()はパラメータ2が文字列、配列が指定されて空白の配列になることを期待しています – Jacob

+0

私のコードを更新しています –

+0

私の更新コードをチェックしてくださいそれは仕事かどうかconfirom –

関連する問題