我有一个多维数组设置,如下所示:
array( [0]=> array( ["name"]=> "Foo" ["slug"]=> "Bar" ) [1]=> array( ["name"]=> "Foo" ["slug"]=> "Bar" ) [2]=> array( ["name"]=> "Test 1" ["slug"]=> "test-1" ) [3]=> array( ["name"]=> "Test 2" ["slug"]=> "test-2" ) [4]=> array( ["name"]=> "Test 3" ["slug"]=> "test-3" ) )
在该区域中搜索“名称”中的重复值并将其删除以使多维数组中的每个值都是唯一的最佳方法是什么?
提前致谢!
由于每个人都提供了替代方案,因此这里是解决当前问题的方法。有时,我们必须使用已有的数据,而不必按照自己喜欢的方式进行重新排列。话虽如此,这将从阵列中删除所有重复的后续条目。
$array = Array( Array( 'name' => 'Test 3', 'slug' => 'test-3' ), Array( 'name' => 'Foo', 'slug' => 'Bar' ), Array( 'name' => 'Foo', 'slug' => 'Bar' ), Array( 'name' => 'Test 1', 'slug' => 'test-1' ), Array( 'name' => 'Test 2', 'slug' => 'test-2' ), Array( 'name' => 'Test 3', 'slug' => 'test-3' ), ); var_dump($array); for ($e = 0; $e < count($array); $e++) { $duplicate = null; for ($ee = $e+1; $ee < count($array); $ee++) { if (strcmp($array[$ee]['name'],$array[$e]['name']) === 0) { $duplicate = $ee; break; } } if (!is_null($duplicate)) array_splice($array,$duplicate,1); } var_dump($array);
看起来像这样:
array(6) { [0]=> array(2) { ["name"]=> string(6) "Test 3" ["slug"]=> string(6) "test-3" } [1]=> array(2) { ["name"]=> string(3) "Foo" ["slug"]=> string(3) "Bar" } [2]=> array(2) { ["name"]=> string(3) "Foo" ["slug"]=> string(3) "Bar" } [3]=> array(2) { ["name"]=> string(6) "Test 1" ["slug"]=> string(6) "test-1" } [4]=> array(2) { ["name"]=> string(6) "Test 2" ["slug"]=> string(6) "test-2" } [5]=> array(2) { ["name"]=> string(6) "Test 3" ["slug"]=> string(6) "test-3" } } array(4) { [0]=> array(2) { ["name"]=> string(6) "Test 3" ["slug"]=> string(6) "test-3" } [1]=> array(2) { ["name"]=> string(3) "Foo" ["slug"]=> string(3) "Bar" } [2]=> array(2) { ["name"]=> string(6) "Test 1" ["slug"]=> string(6) "test-1" } [3]=> array(2) { ["name"]=> string(6) "Test 2" ["slug"]=> string(6) "test-2" } }