1

番号がすでに割り当てられているアイテムのセットがあり、前の人がスプレッドシートに残したギャップを埋めようとしています。これを行うためのphpスクリプトを作成できると思いましたが、割り当てられた番号が奇妙な場所に配置されています。

次に例を示します。

数字/名前の連想配列があります

[0] => 3502 "Scallops, Bay" [1] => 3503 "Oysters, Chesepeake" [2] => 3504 "Clams, Cherry Stone"

これらを注文するスクリプトは次のとおりです。

$d = file("list.txt");
$j=0;
for ($i=2000;$i<8000;$i++) {  //I want the codes to begin at the 2000 and end at 8000
    if (strpos($d[$j], $i) !== false) {
        echo $d[$j]."<br/>";
        $j++;
    } else {
        echo $i."<br/>";
    }
}

しかし、ここに私が得ているものがあります:

2000-2056 は $d の [0] と一致しないため問題なく出力されますが、2057 では出力されます

2056
3502    "Scallops, Bay" 
3503    "Oysters, Chesepeake"
2059
2060
3504    "Clams, Chery Stone" 

次に、$d の [3] を印刷する 2080 年まで印刷を続けます。

私は本当に混乱しています。"3502 'Scallops, Bay'" のどこにも 2057 が表示されません。

別のアプローチを試す必要がありますか?

4

3 に答える 3

0

次のようにファイルを操作して、並べ替えcsvに使用してみてくださいSplMinHeap

例:

// Where to store Result
$store = new SortedValue();

// Read File
$fp = fopen("list.txt", "r");

// Read each file content
while(($data = fgetcsv($fp, 1000, " ")) !== FALSE) {
    // Filter Empty space
    $data = array_filter($data);

    // Your Filter
    if ($data[0] > 2000 && $data[0] < 8000) {
        $store->insert($data);
    }
}

// Print_r all result
print_r(iterator_to_array($store));

使用クラス

class SortedValue extends SplMinHeap {
    function compare($a, $b) {
        return $b[0] - $a[0];
    }
}
于 2013-05-13T22:23:15.353 に答える