用PHP搜索CSV文件中的特定行,并返回该行的特定字段

vbkedwbf  于 2023-09-27  发布在  PHP
关注(0)|答案(2)|浏览(133)

我是一个新手,有一个小的PHP问题!我有一个CSV文件,经常更改其内容。比如说:

PRODUCT; DESC; PRICE
32; X; 900
37; X; 1200
4; X; 82

请注意:物品的顺序可以改变!
我现在想重复一下产品“37”的描述。
我正在尝试fgetcsv,但只能回显整个文件:

$row = 1;
if (($handle = fopen("test.csv"; "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}

如何访问特定行的特定字段(我希望使用关键字= Product查找)?
感谢您对初学者的任何帮助!

bpzcxfmw

bpzcxfmw1#

如果你想通过头键引用获取csv行

function get_csv_row($path=null,$key=null,$search=null){
        if(empty($path) || empty($key)){
            return array();
        }

        $row_num =1;$search_row=array();
        if (($handle = fopen($path, "r")) !== FALSE) {
            while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                
                if($row_num==1){
                    $header_csv = $data;
                    $row_num=2;
                    continue;
                }

                $row_data=array_combine($header_csv, $data);

                if(isset($row_data[$key]) && trim($row_data[$key]) == $search){
                    $search_row = $data;
                    break;
                }

                $row_num++;
            }
        }
        fclose($handle);
        return $search_row;
    }
bvhaajcl

bvhaajcl2#

要只得到一个产品,例如37,您可以使用if条件:

$row = 1;
if (($handle = fopen("test.csv"; "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        if ($data[0] == '37') {
            // do something with your row
        }
    }
    fclose($handle);
}

$data[0]是您的产品ID,$data[1]是您的desc,$data[2]是价格。

相关问题