我在许多数组中都有数据
$verbs_L1_occurr,
$verbs_L2_occurr,
$verbs_L3_occurr,
.....)
和在此基础上,我定义了新的数组,删除所有双精度值:
$verbs_L1_unique = array_unique($verbs_L1_occurr);
$verbs_L2_unique = array_unique($verbs_L2_occurr);
$verbs_L3_unique = array_unique($verbs_L3_occurr);
etc.
我的整个代码,包括这个片段,工作得很好,作为一个初学者我为它感到无比自豪,但我发现有这么多重复的台词令人不安。我怀疑任何有经验的程序员我会在这里开怀大笑…
因此,问题是:我如何简化它?我尝试循环通过的任何方式这个,我做错了。试过用计数器循环,但无所谓我得到一个错误或无效参数。非常感谢任何提示,谢谢!你有几个解决方案。
1 -动态调用变量
在循环中,我将用变量名创建一个变量,并通过双精度变量$$动态调用它。我不喜欢这个解决方案:)
<?php
$verbs_L1_occurr = ['a', 'b', 'c', 'a'];
$verbs_L2_occurr = ['a', 'b', 'c', 'b', 'b'];
for( $i = 1 ; $i < 2 ; $i++ ) { // iterate from 1 to 2
$function = 'verbs_L' . $i . '_occcur';
$$function = array_unique($$function);
}
2 -使用3D数组
(As said by Scott)
<?php // I use php 5.4
$verbs = [];
$verbs['L1'] = ['a', 'b', 'c', 'a'];
$verbs['L2'] = ['a', 'b', 'c', 'b', 'b'];
foreach( $verbs as $key => $values )
$verbs[$key] = array_unique($values);
或只是:
$verbs = array_map('array_unique', $verbs);