0

我正在从作为数组返回的 xls 文档中提取数据。然而,数组键不是数字,而是类似于单元格列的字母数字。所以有效地我有一个这样的数组:

  // Example array:
  $array = array(
        [0] => array(
              "A" => "Name",
              "B" => "Surname",
              "C" => "",
              "D" => "Telephone"
        ),
        [1] => array(
              "A" => "Name",
              "B" => "Surname",
              "C" => "",
              "D" => "Telephone"
        ),
        [2] => array(
              "A" => "",
              "B" => "",
              "C" => "",
              "D" => ""
        )
  );

现在返回数组的问题是它根本不过滤数组,并且我可能在行中有行和行中的空值。

我需要一种方法来完全清理数组,以便删除空行和数字,但这可能会给我以后数组一致性带来一些问题。

我正在寻找的是一个函数,它可以通过一个字母数字来切分数组中的行。如此有效的类似 array_chop($array","C"); 然后将有效地从 D 开始取消设置所有剩余行键和值对。

这可能吗?我已经可以使用 php 函数了吗?很抱歉,我无法提供示例代码,但我不知道从哪里开始。该数组非常大,因此我正在寻找一种内存高效的解决方案。

先感谢您!

4

1 回答 1

0

如果您只想复制列的一小部分,这必须是有效的:

<?php
$array = array(
      0 => array(
            "A" => "Name",
            "B" => "Surname",
            "C" => "",
            "D" => "Telephone"
            ),
      1 => array(
            "A" => "Name",
            "B" => "Surname",
            "C" => "",
            "D" => "Telephone"
            ),
      2 => array(
            "A" => "",
            "B" => "",
            "C" => "",
            "D" => ""
            )
      );

$last_column = 1;

$n = count($array);
for ($i = 0; $i < $n; ++$i)
{
      $copy = array();
      $j = 0;
      foreach($array[$i] as $key => $value)
      {
            if ($j <= $last_column)
            {
                  $copy[$key] = $value;
                 ++$j;
            }
            else
            {
                  $array[$i] = $copy;
                  break;
            }
      }
}

var_dump($array);

这仅在矩阵中留下姓名和姓氏:

array(3) {
  [0]=>
  array(2) {
    ["A"]=>
    string(4) "Name"
    ["B"]=>
    string(7) "Surname"
  }
  [1]=>
  array(2) {
    ["A"]=>
    string(4) "Name"
    ["B"]=>
    string(7) "Surname"
  }
  [2]=>
  array(2) {
    ["A"]=>
    string(0) ""
    ["B"]=>
    string(0) ""
  }
}
于 2013-01-19T13:47:53.850 回答