繁体   English   中英

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

[英]How to dynamically get column value from csv file using php

我在 csv 文件名和电话中有两列。 如果我将电话号码作为变量$searchStr = "6059574150"; 它必须在 csv 文件中找到号码,我需要该联系人姓名才能像这样动态访问 $data['Name'] 而不是 $data['0'] MY 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);

我的 output 是这样的

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

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


 )

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

如果电话号码是唯一的,您可以执行以下操作:

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

}
?>

如果每个电话号码有多个姓名(人),则可以将它们连接起来$final_result[$data[1]].= ','. $data[0]; $final_result[$data[1]].= ','. $data[0]; .

示例结果:

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

要从电话号码中搜索姓名,您必须执行以下操作: $final_result[phone_number]并获得姓名。


在您的 output 数组“$final_result”中,您可以通过以下方式通过电话号码查找名称:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM