はじめに、と同様のの質問をしていますが、いくつかの質問を読んだことがありますが、私のコードに例を示して正しく実装できるものは何もありません。私は数千の数字を保持する配列を持っている、彼らはディレクトリ内のファイルの名前です。私はこれらのファイル名を検索するMySQL Queryを実行する必要がありますが、私はすべての個別のクエリを別の配列に入れる必要があります。ここでforeachループから文字列を配列に格納する方法は?
は、ファイル名をつかむために私のコードです:
$dir = "C:/Users/EyeCandy-Brian/Desktop/jobs";
$files = array_diff(scandir($dir), array('..', '.'));
function truncate(&$fcn) {
$fcn = substr($fcn, 0, 6); // The original is '100100.dat', I only need the number
};
array_walk($files, "truncate");
配列は次のようになります。
2 => string '100100'
3 => string '100101'
4 => string '100102'
5 => string '100103'
// About 1,500+ Total
そして、ここでは私の宣言された変数と私のforeachループです:
$limit = 0; // This is for testing, stops after 5 iterations.
$qryArrNum = 2; // The index for the $files array, [0] & [1] were '.' & '..'
$count = 0; // Which index I want to store the string in, starting at [0]
$qry = array(); // I declare $qry as an array
foreach ($files as &$qry) {
$qry[$count++] = "SELECT * FROM `table` WHERE `sku` LIKE '%$files[$qryArrNum]%'";
++$qryArrNum;
if (++$limit == 5) {
break;
};
};
ここにいますそれは野生になる。 var_dump($qry);
を使用すると、私は'1001S4'
となるはずがありません。 var_dump($files);
を実行し、配列の最初の5つの文字列は以下のとおりです。
2 => string 'S00100'
3 => string '1S0101'
4 => string '10S102'
5 => string '100S03'
6 => string '1001S4'
その後、次のことファイル名から期待される文字列です:
は、だから私の質問は、私は$qry
が配列であることを得るのですか、である
7 => string '100105'
8 => string '100106'
9 => string '100107'
// On for 1,500+ again
は、各文字列は$files
の最初の値と$qry
配列の次の文字列の検索を含むMySQLクエリであり、$files
から次の値を検索します。また、$files
の最初の一握りの値が、予想される値とまったく異なるのはなぜですか?
注:私は順次千プラスMySQLのクエリを実行すると、私のサーバーを殺害することをを理解し、私は一つの大きなクエリにそれらを組み合わせることimplode();
を使用します、私は最初にこれを理解する必要があります。
一致するすべてのアイテムを返します。外側( '$ qry')はforeach値と同じです。どうして? – FirstOne
'foreach($ files as&$ qry)'は、あなたをめちゃくちゃさせるものです。 '$ qry [$ file] = 'SELECT * FROM ...'を使用することができます。 – Scuzzy
ここでは、これを過度に複雑にしているようです。 – FirstOne