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
    }
}

例: NUMASSOC

ソース

編集:だから私はそれがインデックスの設定解除と関係があるに違いないと考えたので、私はこれをしました、そしてそれはうまくいくようです:

$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 に答える