【发布时间】:2012-08-16 05:52:00
【问题描述】:
我有两个数组,$A 和 $B。两个数组的长度相同,但数组 $A 将始终具有与 $B 相同数量的非空元素,或者它具有比 $B 更少的非空元素。
如果,
$B = array("john","adams","sandwich");
那么 $A 可能是,
$A = array("bacon","ham","juice");
也可能是,
$A = array("bacon","","");
我正在尝试将 $B 的空元素与 $A 匹配。所以我可以得到,
$B = array("john","","");
我目前正在通过以下代码进行操作:
$q = count($A) - 1;
$l = count($A) - count(array_filter($A));
$i = 1;
while($i <= $l){
$B[$q] = "";
$i++;
$q--;
}
但是这种方法非常慢,考虑到我要多次这样做,可能会导致问题。你们对如何更有效地做到这一点有什么建议吗?数组永远不会超过 20 个元素,但出于某种原因,这仍然很耗时。
【问题讨论】:
-
非空元素是否总是在数组的开头?
-
是的,非空元素总是在开头。
-
当你只能使用其中一个时,为什么还要使用
$i, $l, $q?其次,循环直到到达$l不会在数组元素之间“匹配” -
$q 是求数组的长度(这个值会在每次脚本执行时改变)。 $l 是找出其中有多少是空的,这基本上告诉我需要删除多少。我只是使用 $i 作为计数器。我也尝试过使用 foreach() 方法而不使用任何索引,但这似乎更慢。