在php中通过循环定义数组


Defining arrays by a loop in php

我在许多数组中都有数据

$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);