我有一组数据库对象,我使用foreach()来显示名称和项目。好的,现在客户不希望当一个人有多个项目时重复名称。这与变量范围有关,这是我试图将此特技拉下来的失败。这是对象数组的部分var_dump。
array [
0 => {
["lastName"]=>
string(1) "w"
["projectName"]=>
string(29) "Bone density scanner analysis"
}
1 => {
["lastName"]=>
string(1) "w"
["projectName"]=>
string(29) "analysis of foot"
}
]
我最终想要的是:
array [
0 => {
["lastName"]=>
string(1) "w"
["projectName"]=>
string(29) "Bone density scanner analysis"
}
1 => {
["lastName"]=>
string(1) ""
["projectName"]=>
string(16) "analysis of foot"
}
]
以下是我认为似乎不起作用的内容:
function suppress_name($name){
global $string;
return ($name == $string) ? '' : $string;
}
function overall() {
//$result = database call to get objects
foreach ($result as $item) {
$string = $item->lastName;
$rows = array('Name' => suppress_name($item->lastName), 'project' => $item->projectName);
}
}
研究我看到了几个对array_unique()的引用,我将其用于扁平数组,但我看不出它会对我有所帮助。好吧,我以为我可以像上面那样创建一个函数来处理重复项并使用$ global但是我认为我并没有理解如何在这个实例中使用全局变量。我很高兴能够指出更好的方式或更好的搜索条件。这有意义吗?
答案 0 :(得分:1)
这是一种可能的解决方案,我们将姓氏存储在一维数组中,然后通过数组的每次迭代检查它。如果lastName
在数组中,则将值设置为''
。
请注意使用引用(&
)。
<?php
$arrays = array(
array('lastName' => 'w', 'projectName' => 'Bone density scanner analysis'),
array('lastName' => 'w', 'projectName' => 'analysis of foot')
);
$last_names = array();
foreach($arrays as &$array){
if( in_array($array['lastName'],$last_names) ){
$array['lastName'] = '';
}else{
$last_names[] = $array['lastName'];
}
}
echo '<pre>',print_r($arrays),'</pre>';
答案 1 :(得分:0)
使用嵌套数组会更容易
var svc = myFactory();
$scope.NumDen = svc.query();