【问题标题】:Text file data to an associative array in PHP and search data文本文件数据到 PHP 中的关联数组和搜索数据
【发布时间】:2017-08-21 18:58:15
【问题描述】:

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

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

我可以把数据当作一个数组,但不能把它当作一个关联数组。我想做以下事情:

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

【问题讨论】:

  • 请提供您所需的答案和您目前已完成的答案

标签: php arrays associative-array


【解决方案1】:

我相信我明白你想要什么,而且很简单。首先,您需要将文件读入 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 hereif (count($values) === 3) { // 可以处理

【讨论】:

  • 很抱歉我的陈述不清楚。我是新来的,所以我想我需要一些时间来适应。
  • 非常感谢。我在文本文件的末尾多了一行。我已经删除了它,现在它工作正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多