1

这应该采用任何ing_name重复的行,组合eff_name字段并删除重复项,但它也具有将数组从数字更改为关联的副作用。我的 ajax 期待数字数组。

for($i=count($recipe)-1; $i>0; $i--) {
    if($recipe[$i]['ing_name'] == $recipe[$i-1]['ing_name']) { //check for duplicate. **array must be sorted by ing_name**
        $recipe[$i-1]['eff_name'] .= ', '.$recipe[$i]['eff_name']; //Combine eff_name of duplicates
        $recipe[$i-1]['link'] = true;
        unset($recipe[$i]); //remove duplicate index
    }
}

示例:NUM , ASSOC

来源

编辑:所以我认为它必须与取消设置索引有关,所以我这样做了,它似乎工作正常:

$newRecipe = array();
foreach($recipe as $r) {
    $newRecipe[] = $r;
}

新问题,有没有更好的方法?

4

2 回答 2

1

unset使用命名键。您可以array_splice改用,或者在循环之后获得一个全新的数组array_values(但这会很丑!)。

于 2012-04-26T19:01:13.327 回答
1

array_values()将返回一个数字索引数组

于 2012-04-26T19:02:02.480 回答