将文件数据文本传输到PHP和搜索数据中的关联数组

时间:2017-08-21 18:58:15

标签: php arrays associative-array

我是PHP的初学者。我有一个这样的文本文件:

Name-Id-Number
Abid-01-80
Sakib-02-76

我可以将数据作为数组,但无法将其作为关联数组。我想做以下事情:

  • 将数据作为PHP中的关联数组。
  • 使用ID搜索号码。
  • 找出数字总数

1 个答案:

答案 0 :(得分:0)

我相信我明白你想要什么,而且相当简单。首先,您需要将文件读入php数组。这可以通过以下方式完成:

$filedata = file($filename, FILE_IGNORE_NEW_LINES);

现在使用foreach()循环,爆炸和标准数组赋值构建所需的数组。您的搜索要求不清楚,但在此示例中,我将关联的数组元素转换为一个数组,该数组也是一个关联数组,其中包含' id'和' num'。

在创建新数组时,您可以计算总和,如图所示。

<?php

$filedata = array('Abid-01-80', 'Sakib-02-76');

$lineArray = array();
$numTotal = 0;

foreach ($filedata as $line) {
    $values = explode('-', $line);
    $numTotal += $values[2];
    $lineArray[$values[0]] = array('id' => $values[1], 'num' => $values[2]);
}

echo "Total: $numTotal\n\n";
var_dump($lineArray);

你可以see this code demonstrated here

更新回复:

请注意,通知不是错误。他们告诉您,您的代码可能更清晰,但通常会在生产中受到抑制。

未定义的变量通知即将发布,因为您正在使用:

$var += $var之前没有初始化$ var。请注意,您在此练习中不一致。例如,您初始化了$ numTotal,因此当您使用相同的方法递增它时,您没有收到通知。

只需在$numTotal = 0下面添加:

$count = 0;
$countEighty = 0;

您的其他通知很可能是由于输入中的空行或字符串不符合预期模式而发生的。执行explode时,它不返回包含3个元素的数组,因此当您尝试引用$values = explode('-', $line);时,需要确保$ line在处理之前不是空字符串。您还可以添加一个完整性检查,如:

enter code here if(count($ values)=== 3){//可以处理