如何使用 php 从 csv 文件中动态获取列值

How to dynamically get column value from csv file using php

我在 csv 文件名称和 Phone 中有两列。如果我给 phone 数字作为变量 $searchStr = "6059574150"; 它必须在 csv 文件中找到数字,我需要那个联系人姓名来动态访问 $data['Name'] 而不是 $data ['0'] 我的php代码

$header = array();
$final_result = array();
$file = fopen('example.csv', 'r');
if($file){
$row = 1;
while ($data = fgetcsv($file, 10000, ",")){

    if($row == 1){
        $header = array_values($data);
    }
    else{
        $final_result[] = array_combine($header, array_values($data));
    }

$row++;
}

}
    echo "<pre>";
    print_r($final_result);

我的输出是这样的

Array
 (
[0] => Array
    (
        [Names] => MICHAEL
        [Phone] => 6059342614
    )

[1] => Array
    (
        [Names] => GLENN
        [Phone] => 6056296061
    )


 )

如何直接访问列?像这样 $data['Name']

如果 phone 个数字是唯一的,您可以这样做:

<?php

$final_result = array();
$file = fopen('example.csv', 'r');

if($file) {
    $header = fgetcsv($file, 10000, ",");

    while ($data = fgetcsv($file, 10000, ",")) {
        $final_result[$data[1]] = $data[0];
    }

}
?>

如果每个 phone 号码有多个姓名(人),您可以将它们串联起来 $final_result[$data[1]] .= ',' . $data[0];

示例结果:

array (
  phone1 => 'name1',
  phone2 => 'name2',
  phone3 => 'name3',
)

要从 phone 号码中搜索姓名,您必须执行以下操作:$final_result[phone_number] 然后您会得到姓名。


在您的输出数组“$final_result”中,您可以通过 phone 数字查找姓名,方式如下:

$foundKey = array_search('pone_number_to_search', array_column($final_result, "Phone"));

$foundNames = $final_result[$foundKey]["Names"];