通过字母键清理php数组
我从一个xls文档中提取数据,该文档以数组形式返回。但是,数组键不是数字,而是类似于单元格列字母数字。所以实际上我有这样一个数组:通过字母键清理php数组,php,arrays,Php,Arrays,我从一个xls文档中提取数据,该文档以数组形式返回。但是,数组键不是数字,而是类似于单元格列字母数字。所以实际上我有这样一个数组: // Example array: $array = array( [0] => array( "A" => "Name", "B" => "Surname", "C" => "", "D" => "T
// 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函数我已经可以使用?我很抱歉,我不能提供示例代码,但我不知道从哪里开始。数组是相当大的,所以我正在寻找一个内存高效的解决方案
提前谢谢!如果您只想复制专栏的一小部分,这必须是高效的:
<?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);
普通的老式
foreach
是你需要的zerkms,我担心这是唯一的方法。问题是数组大约有6000行,所以foreach需要永远的时间。为什么你要在D仍然包含电话的时候切掉C?@Mauritz Swanepoel:“大约6000行,所以foreach需要永远的时间。”“---真正的程序员和算命师的区别在于,第一个是用事实来操作的。那么让我开始工作吧。”
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) ""
}
}