通过字母键清理php数组

时间:2013-01-19 11:24:38

标签: php arrays

我从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" => ""
        )
  );

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

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

我正在寻找的是一个可以通过一个alphebitical数字切割数组中的行的函数。所以有效的类似于array_chop($ array“,”C“);然后它会从D开始有效地取消所有剩余行键和值对。

这可能吗?有没有我可以使用的PHP功能?对不起,我无法提供示例代码,但我不知道从哪里开始。该阵列非常庞大,因此我正在寻找一种内存有效的解决方案。

提前谢谢!

1 个答案:

答案 0 :(得分: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) ""
  }
}